KILLED proof of input_gUSA24Luuu.trs # AProVE Commit ID: aff8ecad908e01718a4c36e68d2e55d5e0f16e15 fuhs 20220216 unpublished The Runtime Complexity (parallel-innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, INF). (0) CpxRelTRS (1) SInnermostTerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 1163 ms] (2) CpxRelTRS (3) RenamingProof [BOTH BOUNDS(ID, ID), 1 ms] (4) CpxRelTRS (5) RelTrsToTrsProof [UPPER BOUND(ID), 0 ms] (6) CpxTRS (7) RelTrsToWeightedTrsProof [UPPER BOUND(ID), 0 ms] (8) CpxWeightedTrs (9) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (10) CpxTypedWeightedTrs (11) CompletionProof [UPPER BOUND(ID), 0 ms] (12) CpxTypedWeightedCompleteTrs (13) CompletionProof [UPPER BOUND(ID), 0 ms] (14) CpxTypedWeightedCompleteTrs (15) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 62 ms] (16) CpxRNTS (17) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (18) CdtProblem (19) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (20) CdtProblem (21) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 34 ms] (22) CdtProblem (23) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (24) CdtProblem (25) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (26) CdtProblem (27) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (28) CdtProblem (29) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 56 ms] (30) CdtProblem (31) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (32) CdtProblem (33) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (34) CdtProblem (35) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (36) CdtProblem (37) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (38) CdtProblem (39) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (40) CdtProblem (41) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (42) CdtProblem (43) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 9 ms] (44) CdtProblem (45) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (46) CdtProblem (47) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (48) CdtProblem (49) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 30 ms] (50) CdtProblem (51) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (52) CdtProblem (53) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (54) CdtProblem (55) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 19 ms] (56) CdtProblem (57) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 4 ms] (58) CdtProblem (59) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 4 ms] (60) CdtProblem (61) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 31 ms] (62) CdtProblem (63) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (64) CdtProblem (65) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 9 ms] (66) CdtProblem (67) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (68) CdtProblem (69) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (70) CdtProblem (71) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (72) CdtProblem (73) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 19 ms] (74) CdtProblem (75) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (76) CdtProblem (77) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 58 ms] (78) CdtProblem (79) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (80) CdtProblem (81) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 14 ms] (82) CdtProblem (83) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 117 ms] (84) CdtProblem (85) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 4 ms] (86) CdtProblem (87) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (88) CdtProblem (89) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 58 ms] (90) CdtProblem (91) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 8 ms] (92) CdtProblem (93) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (94) CdtProblem (95) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 75 ms] (96) CdtProblem (97) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (98) CdtProblem (99) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (100) CdtProblem (101) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 107 ms] (102) CdtProblem (103) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (104) CdtProblem (105) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 21 ms] (106) CdtProblem (107) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 141 ms] (108) CdtProblem (109) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (110) CdtProblem (111) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 26 ms] (112) CdtProblem (113) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 84 ms] (114) CdtProblem (115) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (116) CdtProblem (117) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 15 ms] (118) CdtProblem (119) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 80 ms] (120) CdtProblem (121) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (122) CdtProblem (123) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 209 ms] (124) CdtProblem (125) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (126) CdtProblem (127) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 126 ms] (128) CdtProblem (129) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (130) CdtProblem (131) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 106 ms] (132) CdtProblem (133) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (134) CdtProblem (135) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 75 ms] (136) CdtProblem (137) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (138) CdtProblem (139) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 99 ms] (140) CdtProblem (141) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 14 ms] (142) CdtProblem (143) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 93 ms] (144) CdtProblem (145) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (146) CdtProblem (147) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 116 ms] (148) CdtProblem (149) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (150) CdtProblem (151) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 299 ms] (152) CdtProblem (153) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 9 ms] (154) CdtProblem (155) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 126 ms] (156) CdtProblem (157) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 4 ms] (158) CdtProblem (159) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 144 ms] (160) CdtProblem (161) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 23 ms] (162) CdtProblem (163) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 202 ms] (164) CdtProblem (165) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 15 ms] (166) CdtProblem (167) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 43 ms] (168) CdtProblem (169) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 358 ms] (170) CdtProblem (171) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (172) CdtProblem (173) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 57 ms] (174) CdtProblem (175) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 191 ms] (176) CdtProblem (177) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 22 ms] (178) CdtProblem (179) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 55 ms] (180) CdtProblem (181) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 171 ms] (182) CdtProblem (183) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (184) CdtProblem (185) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 47 ms] (186) CdtProblem (187) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 309 ms] (188) CdtProblem (189) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 44 ms] (190) CdtProblem (191) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 47 ms] (192) CdtProblem ---------------------------------------- (0) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: eeval(Fun(n, e), ns, vs, p) -> eeval[False][Let](Fun(n, e), ns, vs, p, lookbody(n, p)) eeval(Eq(f, s), ns, vs, p) -> eeval[True][Ite](eqExp(eeval(f, ns, vs, p), eeval(s, ns, vs, p)), Eq(f, s), ns, vs, p) eeval(Error(e11, e12), ns, vs, p) -> eeval[False][Ite](False, Error(e11, e12), ns, vs, p) eeval(F, ns, vs, p) -> F eeval(T, ns, vs, p) -> T eeval(ITE(i, t, e), ns, vs, p) -> eeval[Ite](checkConstrExp(eeval(i, ns, vs, p), T), ITE(i, t, e), ns, vs, p) eeval(Bsf(op, t1, t2), ns, vs, p) -> eeval[Let](Bsf(op, t1, t2), ns, vs, p, eeval(t1, ns, vs, p)) eeval(Var(int), ns, vs, p) -> lookvar(int, ns, vs) run(Cons(Fun(f0, e), xs), input) -> run[Let][Let](Cons(Fun(f0, e), xs), input, f0, lookbody(f0, Cons(Fun(f0, e), xs))) eqExp(Error(e11, e12), Error(e21, e22)) -> and(eqExp(e11, e21), eqExp(e12, e22)) eqExp(Error(e11, e12), F) -> False eqExp(Error(e11, e12), T) -> False eqExp(Error(e11, e12), Fun(fn2, fe2)) -> False eqExp(Error(e11, e12), Eq(eq21, eq22)) -> False eqExp(Error(e11, e12), ITE(i2, t2, e2)) -> False eqExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False eqExp(Error(e11, e12), Var(v2)) -> False eqExp(F, Error(e21, e22)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(fn2, fe2)) -> False eqExp(F, Eq(eq21, eq22)) -> False eqExp(F, ITE(i2, t2, e2)) -> False eqExp(F, Bsf(op2, b21, b22)) -> False eqExp(F, Var(v2)) -> False eqExp(T, Error(e21, e22)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(fn2, fe2)) -> False eqExp(T, Eq(eq21, eq22)) -> False eqExp(T, ITE(i2, t2, e2)) -> False eqExp(T, Bsf(op2, b21, b22)) -> False eqExp(T, Var(v2)) -> False eqExp(Fun(fn1, fe1), Error(e21, e22)) -> False eqExp(Fun(fn1, fe1), F) -> False eqExp(Fun(fn1, fe1), T) -> False eqExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> and(!EQ(fn1, fn2), eqExp(fe1, fe2)) eqExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False eqExp(Fun(fn1, fe1), ITE(i2, t2, e2)) -> False eqExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False eqExp(Fun(fn1, fe1), Var(v2)) -> False eqExp(Eq(eq11, eq12), Error(e21, e22)) -> False eqExp(Eq(eq11, eq12), F) -> False eqExp(Eq(eq11, eq12), T) -> False eqExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False eqExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> and(eqExp(eq11, eq21), eqExp(eq12, eq22)) eqExp(Eq(eq11, eq12), ITE(i2, t2, e2)) -> False eqExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False eqExp(Eq(eq11, eq12), Var(v2)) -> False eqExp(ITE(i1, t1, e1), Error(e21, e22)) -> False eqExp(ITE(i1, t1, e1), F) -> False eqExp(ITE(i1, t1, e1), T) -> False eqExp(ITE(i1, t1, e1), Fun(fn2, fe2)) -> False eqExp(ITE(i1, t1, e1), Eq(eq21, eq22)) -> False eqExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> and(eqExp(i1, i2), and(eqExp(t1, t2), eqExp(e1, e2))) eqExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> False eqExp(ITE(i1, t1, e1), Var(v2)) -> False eqExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False eqExp(Bsf(op1, b11, b12), F) -> False eqExp(Bsf(op1, b11, b12), T) -> False eqExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False eqExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False eqExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> False eqExp(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> and(True, and(eqExp(b11, b21), eqExp(b12, b22))) eqExp(Bsf(op1, b11, b12), Var(v2)) -> False eqExp(Var(v1), Error(e21, e22)) -> False eqExp(Var(v1), F) -> False eqExp(Var(v1), T) -> False eqExp(Var(v1), Fun(fn2, fe2)) -> False eqExp(Var(v1), Eq(eq21, eq22)) -> False eqExp(Var(v1), ITE(i2, t2, e2)) -> False eqExp(Var(v1), Bsf(op2, b21, b22)) -> False eqExp(Var(v1), Var(v2)) -> !EQ(v1, v2) checkConstrExp(Error(e11, e12), Error(e21, e22)) -> True checkConstrExp(Error(e11, e12), F) -> False checkConstrExp(Error(e11, e12), T) -> False checkConstrExp(Error(e11, e12), Fun(fn2, fe2)) -> False checkConstrExp(Error(e11, e12), Eq(eq21, eq22)) -> False checkConstrExp(Error(e11, e12), ITE(i2, t2, e2)) -> False checkConstrExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False checkConstrExp(Error(e11, e12), Var(v2)) -> False checkConstrExp(F, Error(e21, e22)) -> False checkConstrExp(F, F) -> True checkConstrExp(F, T) -> False checkConstrExp(F, Fun(fn2, fe2)) -> False checkConstrExp(F, Eq(eq21, eq22)) -> False checkConstrExp(F, ITE(i2, t2, e2)) -> False checkConstrExp(F, Bsf(op2, b21, b22)) -> False checkConstrExp(F, Var(v2)) -> False checkConstrExp(T, Error(e21, e22)) -> False checkConstrExp(T, F) -> False checkConstrExp(T, T) -> True checkConstrExp(T, Fun(fn2, fe2)) -> False checkConstrExp(T, Eq(eq21, eq22)) -> False checkConstrExp(T, ITE(i2, t2, e2)) -> False checkConstrExp(T, Bsf(op2, b21, b22)) -> False checkConstrExp(T, Var(v2)) -> False checkConstrExp(Fun(fn1, fe1), Error(e21, e22)) -> False checkConstrExp(Fun(fn1, fe1), F) -> False checkConstrExp(Fun(fn1, fe1), T) -> False checkConstrExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> True checkConstrExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False checkConstrExp(Fun(fn1, fe1), ITE(i2, t2, e2)) -> False checkConstrExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False checkConstrExp(Fun(fn1, fe1), Var(v2)) -> False checkConstrExp(Eq(eq11, eq12), Error(e21, e22)) -> False checkConstrExp(Eq(eq11, eq12), F) -> False checkConstrExp(Eq(eq11, eq12), T) -> False checkConstrExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False checkConstrExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> True checkConstrExp(Eq(eq11, eq12), ITE(i2, t2, e2)) -> False checkConstrExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False checkConstrExp(Eq(eq11, eq12), Var(v2)) -> False checkConstrExp(ITE(i1, t1, e1), Error(e21, e22)) -> False checkConstrExp(ITE(i1, t1, e1), F) -> False checkConstrExp(ITE(i1, t1, e1), T) -> False checkConstrExp(ITE(i1, t1, e1), Fun(fn2, fe2)) -> False checkConstrExp(ITE(i1, t1, e1), Eq(eq21, eq22)) -> False checkConstrExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> True checkConstrExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> False checkConstrExp(ITE(i1, t1, e1), Var(v2)) -> False checkConstrExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False checkConstrExp(Bsf(op1, b11, b12), F) -> False checkConstrExp(Bsf(op1, b11, b12), T) -> False checkConstrExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False checkConstrExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False checkConstrExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> False checkConstrExp(Bsf(op1, b11, b12), Bsf(op2, b21, b22)) -> True checkConstrExp(Bsf(op1, b11, b12), Var(v2)) -> False checkConstrExp(Var(v1), Error(e21, e22)) -> False checkConstrExp(Var(v1), F) -> False checkConstrExp(Var(v1), T) -> False checkConstrExp(Var(v1), Fun(fn2, fe2)) -> False checkConstrExp(Var(v1), Eq(eq21, eq22)) -> False checkConstrExp(Var(v1), ITE(i2, t2, e2)) -> False checkConstrExp(Var(v1), Bsf(op2, b21, b22)) -> False checkConstrExp(Var(v1), Var(v2)) -> True lookname(f, Cons(Fun(n, e), xs)) -> lookname[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) lookbody(f, Cons(Fun(n, e), xs)) -> lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) getVar(Var(int)) -> int getIfTrue(ITE(i, t, e)) -> t getIfGuard(ITE(i, t, e)) -> i getIfFalse(ITE(i, t, e)) -> e getFuncName(Fun(n, e)) -> n getFuncExp(Fun(n, e)) -> e getEqSecond(Eq(f, s)) -> s getEqFirst(Eq(f, s)) -> f getConst(Cst(int)) -> int getBsfSecondTerm(Bsf(op, t1, t2)) -> t2 getBsfOp(Bsf(op, t1, t2)) -> op getBsfFirstTerm(Bsf(op, t1, t2)) -> t1 apply(op, v1, v2) -> apply[Ite](eqExp(v1, v2), op, v1, v2) lookvar(x', Cons(x, xs), vs) -> lookvar[Ite](!EQ(x', x), x', Cons(x, xs), vs) eqOps(o1, o2) -> True The (relative) TRS S consists of the following rules: !EQ(S(x), S(y)) -> !EQ(x, y) !EQ(0, S(y)) -> False !EQ(S(x), 0) -> False !EQ(0, 0) -> True and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True eeval[False][Ite](True, Eq(f, s), ns, vs, p) -> eeval[True][Ite](eqExp(eeval(f, ns, vs, p), eeval(s, ns, vs, p)), Eq(f, s), ns, vs, p) lookvar[Ite](False, x', Cons(x'', xs'), Cons(x, xs)) -> lookvar(x', xs', xs) lookname[Ite](True, f, Cons(Fun(n, e), xs)) -> n lookbody[Ite](True, f, Cons(Fun(n, e), xs)) -> e eeval[False][Ite](False, Fun(n, e), ns, vs, p) -> eeval[False][Let](Fun(n, e), ns, vs, p, lookbody(n, p)) eeval[Ite](False, ITE(i, t, e), ns, vs, p) -> eeval(e, ns, vs, p) eeval[Ite](True, ITE(i, t, e), ns, vs, p) -> eeval(t, ns, vs, p) eeval[False][Let](Fun(n, e), ns, vs, p, ef) -> eeval[False][Let][Let](Fun(n, e), ns, vs, p, ef, lookname(n, p)) eeval[False][Let][Let](Fun(n, e), ns, vs, p, ef, nf) -> eeval[Let][Let][Let](Fun(n, e), ns, vs, p, ef, nf, eeval(e, ns, vs, p)) eeval[Let](Bsf(op, t1, t2), ns, vs, p, v1) -> eeval[Let][Let](Bsf(op, t1, t2), ns, vs, p, v1, eeval(t2, ns, vs, p)) eeval[Let][Let](Bsf(op, t1, t2), ns, vs, p, v1, v2) -> apply(op, v1, v2) lookvar[Ite](True, x', ns, Cons(x, xs)) -> x lookname[Ite](False, f, Cons(x, xs)) -> lookname(f, xs) lookbody[Ite](False, f, Cons(x, xs)) -> lookbody(f, xs) eeval[True][Ite](False, e, ns, vs, p) -> F eeval[True][Ite](True, e, ns, vs, p) -> T apply[Ite](False, op, v1, v2) -> F apply[Ite](True, op, v1, v2) -> T run[Let][Let](p, input, f0, ef) -> run[Let](p, input, f0, ef, lookname(f0, p)) run[Let](p, input, f0, ef, nf) -> eeval(ef, Cons(nf, Nil), Cons(input, Nil), p) eeval[Let][Let][Let](e, ns, vs, p, ef, nf, v) -> eeval(ef, Cons(nf, Nil), Cons(v, Nil), p) Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (1) SInnermostTerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) proved innermost termination of relative rules ---------------------------------------- (2) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: eeval(Fun(n, e), ns, vs, p) -> eeval[False][Let](Fun(n, e), ns, vs, p, lookbody(n, p)) eeval(Eq(f, s), ns, vs, p) -> eeval[True][Ite](eqExp(eeval(f, ns, vs, p), eeval(s, ns, vs, p)), Eq(f, s), ns, vs, p) eeval(Error(e11, e12), ns, vs, p) -> eeval[False][Ite](False, Error(e11, e12), ns, vs, p) eeval(F, ns, vs, p) -> F eeval(T, ns, vs, p) -> T eeval(ITE(i, t, e), ns, vs, p) -> eeval[Ite](checkConstrExp(eeval(i, ns, vs, p), T), ITE(i, t, e), ns, vs, p) eeval(Bsf(op, t1, t2), ns, vs, p) -> eeval[Let](Bsf(op, t1, t2), ns, vs, p, eeval(t1, ns, vs, p)) eeval(Var(int), ns, vs, p) -> lookvar(int, ns, vs) run(Cons(Fun(f0, e), xs), input) -> run[Let][Let](Cons(Fun(f0, e), xs), input, f0, lookbody(f0, Cons(Fun(f0, e), xs))) eqExp(Error(e11, e12), Error(e21, e22)) -> and(eqExp(e11, e21), eqExp(e12, e22)) eqExp(Error(e11, e12), F) -> False eqExp(Error(e11, e12), T) -> False eqExp(Error(e11, e12), Fun(fn2, fe2)) -> False eqExp(Error(e11, e12), Eq(eq21, eq22)) -> False eqExp(Error(e11, e12), ITE(i2, t2, e2)) -> False eqExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False eqExp(Error(e11, e12), Var(v2)) -> False eqExp(F, Error(e21, e22)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(fn2, fe2)) -> False eqExp(F, Eq(eq21, eq22)) -> False eqExp(F, ITE(i2, t2, e2)) -> False eqExp(F, Bsf(op2, b21, b22)) -> False eqExp(F, Var(v2)) -> False eqExp(T, Error(e21, e22)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(fn2, fe2)) -> False eqExp(T, Eq(eq21, eq22)) -> False eqExp(T, ITE(i2, t2, e2)) -> False eqExp(T, Bsf(op2, b21, b22)) -> False eqExp(T, Var(v2)) -> False eqExp(Fun(fn1, fe1), Error(e21, e22)) -> False eqExp(Fun(fn1, fe1), F) -> False eqExp(Fun(fn1, fe1), T) -> False eqExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> and(!EQ(fn1, fn2), eqExp(fe1, fe2)) eqExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False eqExp(Fun(fn1, fe1), ITE(i2, t2, e2)) -> False eqExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False eqExp(Fun(fn1, fe1), Var(v2)) -> False eqExp(Eq(eq11, eq12), Error(e21, e22)) -> False eqExp(Eq(eq11, eq12), F) -> False eqExp(Eq(eq11, eq12), T) -> False eqExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False eqExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> and(eqExp(eq11, eq21), eqExp(eq12, eq22)) eqExp(Eq(eq11, eq12), ITE(i2, t2, e2)) -> False eqExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False eqExp(Eq(eq11, eq12), Var(v2)) -> False eqExp(ITE(i1, t1, e1), Error(e21, e22)) -> False eqExp(ITE(i1, t1, e1), F) -> False eqExp(ITE(i1, t1, e1), T) -> False eqExp(ITE(i1, t1, e1), Fun(fn2, fe2)) -> False eqExp(ITE(i1, t1, e1), Eq(eq21, eq22)) -> False eqExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> and(eqExp(i1, i2), and(eqExp(t1, t2), eqExp(e1, e2))) eqExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> False eqExp(ITE(i1, t1, e1), Var(v2)) -> False eqExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False eqExp(Bsf(op1, b11, b12), F) -> False eqExp(Bsf(op1, b11, b12), T) -> False eqExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False eqExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False eqExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> False eqExp(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> and(True, and(eqExp(b11, b21), eqExp(b12, b22))) eqExp(Bsf(op1, b11, b12), Var(v2)) -> False eqExp(Var(v1), Error(e21, e22)) -> False eqExp(Var(v1), F) -> False eqExp(Var(v1), T) -> False eqExp(Var(v1), Fun(fn2, fe2)) -> False eqExp(Var(v1), Eq(eq21, eq22)) -> False eqExp(Var(v1), ITE(i2, t2, e2)) -> False eqExp(Var(v1), Bsf(op2, b21, b22)) -> False eqExp(Var(v1), Var(v2)) -> !EQ(v1, v2) checkConstrExp(Error(e11, e12), Error(e21, e22)) -> True checkConstrExp(Error(e11, e12), F) -> False checkConstrExp(Error(e11, e12), T) -> False checkConstrExp(Error(e11, e12), Fun(fn2, fe2)) -> False checkConstrExp(Error(e11, e12), Eq(eq21, eq22)) -> False checkConstrExp(Error(e11, e12), ITE(i2, t2, e2)) -> False checkConstrExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False checkConstrExp(Error(e11, e12), Var(v2)) -> False checkConstrExp(F, Error(e21, e22)) -> False checkConstrExp(F, F) -> True checkConstrExp(F, T) -> False checkConstrExp(F, Fun(fn2, fe2)) -> False checkConstrExp(F, Eq(eq21, eq22)) -> False checkConstrExp(F, ITE(i2, t2, e2)) -> False checkConstrExp(F, Bsf(op2, b21, b22)) -> False checkConstrExp(F, Var(v2)) -> False checkConstrExp(T, Error(e21, e22)) -> False checkConstrExp(T, F) -> False checkConstrExp(T, T) -> True checkConstrExp(T, Fun(fn2, fe2)) -> False checkConstrExp(T, Eq(eq21, eq22)) -> False checkConstrExp(T, ITE(i2, t2, e2)) -> False checkConstrExp(T, Bsf(op2, b21, b22)) -> False checkConstrExp(T, Var(v2)) -> False checkConstrExp(Fun(fn1, fe1), Error(e21, e22)) -> False checkConstrExp(Fun(fn1, fe1), F) -> False checkConstrExp(Fun(fn1, fe1), T) -> False checkConstrExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> True checkConstrExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False checkConstrExp(Fun(fn1, fe1), ITE(i2, t2, e2)) -> False checkConstrExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False checkConstrExp(Fun(fn1, fe1), Var(v2)) -> False checkConstrExp(Eq(eq11, eq12), Error(e21, e22)) -> False checkConstrExp(Eq(eq11, eq12), F) -> False checkConstrExp(Eq(eq11, eq12), T) -> False checkConstrExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False checkConstrExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> True checkConstrExp(Eq(eq11, eq12), ITE(i2, t2, e2)) -> False checkConstrExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False checkConstrExp(Eq(eq11, eq12), Var(v2)) -> False checkConstrExp(ITE(i1, t1, e1), Error(e21, e22)) -> False checkConstrExp(ITE(i1, t1, e1), F) -> False checkConstrExp(ITE(i1, t1, e1), T) -> False checkConstrExp(ITE(i1, t1, e1), Fun(fn2, fe2)) -> False checkConstrExp(ITE(i1, t1, e1), Eq(eq21, eq22)) -> False checkConstrExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> True checkConstrExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> False checkConstrExp(ITE(i1, t1, e1), Var(v2)) -> False checkConstrExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False checkConstrExp(Bsf(op1, b11, b12), F) -> False checkConstrExp(Bsf(op1, b11, b12), T) -> False checkConstrExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False checkConstrExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False checkConstrExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> False checkConstrExp(Bsf(op1, b11, b12), Bsf(op2, b21, b22)) -> True checkConstrExp(Bsf(op1, b11, b12), Var(v2)) -> False checkConstrExp(Var(v1), Error(e21, e22)) -> False checkConstrExp(Var(v1), F) -> False checkConstrExp(Var(v1), T) -> False checkConstrExp(Var(v1), Fun(fn2, fe2)) -> False checkConstrExp(Var(v1), Eq(eq21, eq22)) -> False checkConstrExp(Var(v1), ITE(i2, t2, e2)) -> False checkConstrExp(Var(v1), Bsf(op2, b21, b22)) -> False checkConstrExp(Var(v1), Var(v2)) -> True lookname(f, Cons(Fun(n, e), xs)) -> lookname[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) lookbody(f, Cons(Fun(n, e), xs)) -> lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) getVar(Var(int)) -> int getIfTrue(ITE(i, t, e)) -> t getIfGuard(ITE(i, t, e)) -> i getIfFalse(ITE(i, t, e)) -> e getFuncName(Fun(n, e)) -> n getFuncExp(Fun(n, e)) -> e getEqSecond(Eq(f, s)) -> s getEqFirst(Eq(f, s)) -> f getConst(Cst(int)) -> int getBsfSecondTerm(Bsf(op, t1, t2)) -> t2 getBsfOp(Bsf(op, t1, t2)) -> op getBsfFirstTerm(Bsf(op, t1, t2)) -> t1 apply(op, v1, v2) -> apply[Ite](eqExp(v1, v2), op, v1, v2) lookvar(x', Cons(x, xs), vs) -> lookvar[Ite](!EQ(x', x), x', Cons(x, xs), vs) eqOps(o1, o2) -> True The (relative) TRS S consists of the following rules: !EQ(S(x), S(y)) -> !EQ(x, y) !EQ(0, S(y)) -> False !EQ(S(x), 0) -> False !EQ(0, 0) -> True and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True eeval[False][Ite](True, Eq(f, s), ns, vs, p) -> eeval[True][Ite](eqExp(eeval(f, ns, vs, p), eeval(s, ns, vs, p)), Eq(f, s), ns, vs, p) lookvar[Ite](False, x', Cons(x'', xs'), Cons(x, xs)) -> lookvar(x', xs', xs) lookname[Ite](True, f, Cons(Fun(n, e), xs)) -> n lookbody[Ite](True, f, Cons(Fun(n, e), xs)) -> e eeval[False][Ite](False, Fun(n, e), ns, vs, p) -> eeval[False][Let](Fun(n, e), ns, vs, p, lookbody(n, p)) eeval[Ite](False, ITE(i, t, e), ns, vs, p) -> eeval(e, ns, vs, p) eeval[Ite](True, ITE(i, t, e), ns, vs, p) -> eeval(t, ns, vs, p) eeval[False][Let](Fun(n, e), ns, vs, p, ef) -> eeval[False][Let][Let](Fun(n, e), ns, vs, p, ef, lookname(n, p)) eeval[False][Let][Let](Fun(n, e), ns, vs, p, ef, nf) -> eeval[Let][Let][Let](Fun(n, e), ns, vs, p, ef, nf, eeval(e, ns, vs, p)) eeval[Let](Bsf(op, t1, t2), ns, vs, p, v1) -> eeval[Let][Let](Bsf(op, t1, t2), ns, vs, p, v1, eeval(t2, ns, vs, p)) eeval[Let][Let](Bsf(op, t1, t2), ns, vs, p, v1, v2) -> apply(op, v1, v2) lookvar[Ite](True, x', ns, Cons(x, xs)) -> x lookname[Ite](False, f, Cons(x, xs)) -> lookname(f, xs) lookbody[Ite](False, f, Cons(x, xs)) -> lookbody(f, xs) eeval[True][Ite](False, e, ns, vs, p) -> F eeval[True][Ite](True, e, ns, vs, p) -> T apply[Ite](False, op, v1, v2) -> F apply[Ite](True, op, v1, v2) -> T run[Let][Let](p, input, f0, ef) -> run[Let](p, input, f0, ef, lookname(f0, p)) run[Let](p, input, f0, ef, nf) -> eeval(ef, Cons(nf, Nil), Cons(input, Nil), p) eeval[Let][Let][Let](e, ns, vs, p, ef, nf, v) -> eeval(ef, Cons(nf, Nil), Cons(v, Nil), p) Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (3) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (4) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: eeval(Fun(n, e), ns, vs, p) -> eeval[False][Let](Fun(n, e), ns, vs, p, lookbody(n, p)) eeval(Eq(f, s), ns, vs, p) -> eeval[True][Ite](eqExp(eeval(f, ns, vs, p), eeval(s, ns, vs, p)), Eq(f, s), ns, vs, p) eeval(Error(e11, e12), ns, vs, p) -> eeval[False][Ite](False, Error(e11, e12), ns, vs, p) eeval(F, ns, vs, p) -> F eeval(T, ns, vs, p) -> T eeval(ITE'(i, t, e), ns, vs, p) -> eeval[Ite](checkConstrExp(eeval(i, ns, vs, p), T), ITE'(i, t, e), ns, vs, p) eeval(Bsf(op, t1, t2), ns, vs, p) -> eeval[Let](Bsf(op, t1, t2), ns, vs, p, eeval(t1, ns, vs, p)) eeval(Var(int), ns, vs, p) -> lookvar(int, ns, vs) run(Cons(Fun(f0, e), xs), input) -> run[Let][Let](Cons(Fun(f0, e), xs), input, f0, lookbody(f0, Cons(Fun(f0, e), xs))) eqExp(Error(e11, e12), Error(e21, e22)) -> and(eqExp(e11, e21), eqExp(e12, e22)) eqExp(Error(e11, e12), F) -> False eqExp(Error(e11, e12), T) -> False eqExp(Error(e11, e12), Fun(fn2, fe2)) -> False eqExp(Error(e11, e12), Eq(eq21, eq22)) -> False eqExp(Error(e11, e12), ITE'(i2, t2, e2)) -> False eqExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False eqExp(Error(e11, e12), Var(v2)) -> False eqExp(F, Error(e21, e22)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(fn2, fe2)) -> False eqExp(F, Eq(eq21, eq22)) -> False eqExp(F, ITE'(i2, t2, e2)) -> False eqExp(F, Bsf(op2, b21, b22)) -> False eqExp(F, Var(v2)) -> False eqExp(T, Error(e21, e22)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(fn2, fe2)) -> False eqExp(T, Eq(eq21, eq22)) -> False eqExp(T, ITE'(i2, t2, e2)) -> False eqExp(T, Bsf(op2, b21, b22)) -> False eqExp(T, Var(v2)) -> False eqExp(Fun(fn1, fe1), Error(e21, e22)) -> False eqExp(Fun(fn1, fe1), F) -> False eqExp(Fun(fn1, fe1), T) -> False eqExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> and(!EQ(fn1, fn2), eqExp(fe1, fe2)) eqExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False eqExp(Fun(fn1, fe1), ITE'(i2, t2, e2)) -> False eqExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False eqExp(Fun(fn1, fe1), Var(v2)) -> False eqExp(Eq(eq11, eq12), Error(e21, e22)) -> False eqExp(Eq(eq11, eq12), F) -> False eqExp(Eq(eq11, eq12), T) -> False eqExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False eqExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> and(eqExp(eq11, eq21), eqExp(eq12, eq22)) eqExp(Eq(eq11, eq12), ITE'(i2, t2, e2)) -> False eqExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False eqExp(Eq(eq11, eq12), Var(v2)) -> False eqExp(ITE'(i1, t1, e1), Error(e21, e22)) -> False eqExp(ITE'(i1, t1, e1), F) -> False eqExp(ITE'(i1, t1, e1), T) -> False eqExp(ITE'(i1, t1, e1), Fun(fn2, fe2)) -> False eqExp(ITE'(i1, t1, e1), Eq(eq21, eq22)) -> False eqExp(ITE'(i1, t1, e1), ITE'(i2, t2, e2)) -> and(eqExp(i1, i2), and(eqExp(t1, t2), eqExp(e1, e2))) eqExp(ITE'(i1, t1, e1), Bsf(op2, b21, b22)) -> False eqExp(ITE'(i1, t1, e1), Var(v2)) -> False eqExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False eqExp(Bsf(op1, b11, b12), F) -> False eqExp(Bsf(op1, b11, b12), T) -> False eqExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False eqExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False eqExp(Bsf(op1, b11, b12), ITE'(i2, t2, e2)) -> False eqExp(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> and(True, and(eqExp(b11, b21), eqExp(b12, b22))) eqExp(Bsf(op1, b11, b12), Var(v2)) -> False eqExp(Var(v1), Error(e21, e22)) -> False eqExp(Var(v1), F) -> False eqExp(Var(v1), T) -> False eqExp(Var(v1), Fun(fn2, fe2)) -> False eqExp(Var(v1), Eq(eq21, eq22)) -> False eqExp(Var(v1), ITE'(i2, t2, e2)) -> False eqExp(Var(v1), Bsf(op2, b21, b22)) -> False eqExp(Var(v1), Var(v2)) -> !EQ(v1, v2) checkConstrExp(Error(e11, e12), Error(e21, e22)) -> True checkConstrExp(Error(e11, e12), F) -> False checkConstrExp(Error(e11, e12), T) -> False checkConstrExp(Error(e11, e12), Fun(fn2, fe2)) -> False checkConstrExp(Error(e11, e12), Eq(eq21, eq22)) -> False checkConstrExp(Error(e11, e12), ITE'(i2, t2, e2)) -> False checkConstrExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False checkConstrExp(Error(e11, e12), Var(v2)) -> False checkConstrExp(F, Error(e21, e22)) -> False checkConstrExp(F, F) -> True checkConstrExp(F, T) -> False checkConstrExp(F, Fun(fn2, fe2)) -> False checkConstrExp(F, Eq(eq21, eq22)) -> False checkConstrExp(F, ITE'(i2, t2, e2)) -> False checkConstrExp(F, Bsf(op2, b21, b22)) -> False checkConstrExp(F, Var(v2)) -> False checkConstrExp(T, Error(e21, e22)) -> False checkConstrExp(T, F) -> False checkConstrExp(T, T) -> True checkConstrExp(T, Fun(fn2, fe2)) -> False checkConstrExp(T, Eq(eq21, eq22)) -> False checkConstrExp(T, ITE'(i2, t2, e2)) -> False checkConstrExp(T, Bsf(op2, b21, b22)) -> False checkConstrExp(T, Var(v2)) -> False checkConstrExp(Fun(fn1, fe1), Error(e21, e22)) -> False checkConstrExp(Fun(fn1, fe1), F) -> False checkConstrExp(Fun(fn1, fe1), T) -> False checkConstrExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> True checkConstrExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False checkConstrExp(Fun(fn1, fe1), ITE'(i2, t2, e2)) -> False checkConstrExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False checkConstrExp(Fun(fn1, fe1), Var(v2)) -> False checkConstrExp(Eq(eq11, eq12), Error(e21, e22)) -> False checkConstrExp(Eq(eq11, eq12), F) -> False checkConstrExp(Eq(eq11, eq12), T) -> False checkConstrExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False checkConstrExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> True checkConstrExp(Eq(eq11, eq12), ITE'(i2, t2, e2)) -> False checkConstrExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False checkConstrExp(Eq(eq11, eq12), Var(v2)) -> False checkConstrExp(ITE'(i1, t1, e1), Error(e21, e22)) -> False checkConstrExp(ITE'(i1, t1, e1), F) -> False checkConstrExp(ITE'(i1, t1, e1), T) -> False checkConstrExp(ITE'(i1, t1, e1), Fun(fn2, fe2)) -> False checkConstrExp(ITE'(i1, t1, e1), Eq(eq21, eq22)) -> False checkConstrExp(ITE'(i1, t1, e1), ITE'(i2, t2, e2)) -> True checkConstrExp(ITE'(i1, t1, e1), Bsf(op2, b21, b22)) -> False checkConstrExp(ITE'(i1, t1, e1), Var(v2)) -> False checkConstrExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False checkConstrExp(Bsf(op1, b11, b12), F) -> False checkConstrExp(Bsf(op1, b11, b12), T) -> False checkConstrExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False checkConstrExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False checkConstrExp(Bsf(op1, b11, b12), ITE'(i2, t2, e2)) -> False checkConstrExp(Bsf(op1, b11, b12), Bsf(op2, b21, b22)) -> True checkConstrExp(Bsf(op1, b11, b12), Var(v2)) -> False checkConstrExp(Var(v1), Error(e21, e22)) -> False checkConstrExp(Var(v1), F) -> False checkConstrExp(Var(v1), T) -> False checkConstrExp(Var(v1), Fun(fn2, fe2)) -> False checkConstrExp(Var(v1), Eq(eq21, eq22)) -> False checkConstrExp(Var(v1), ITE'(i2, t2, e2)) -> False checkConstrExp(Var(v1), Bsf(op2, b21, b22)) -> False checkConstrExp(Var(v1), Var(v2)) -> True lookname(f, Cons(Fun(n, e), xs)) -> lookname[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) lookbody(f, Cons(Fun(n, e), xs)) -> lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) getVar(Var(int)) -> int getIfTrue(ITE'(i, t, e)) -> t getIfGuard(ITE'(i, t, e)) -> i getIfFalse(ITE'(i, t, e)) -> e getFuncName(Fun(n, e)) -> n getFuncExp(Fun(n, e)) -> e getEqSecond(Eq(f, s)) -> s getEqFirst(Eq(f, s)) -> f getConst(Cst(int)) -> int getBsfSecondTerm(Bsf(op, t1, t2)) -> t2 getBsfOp(Bsf(op, t1, t2)) -> op getBsfFirstTerm(Bsf(op, t1, t2)) -> t1 apply(op, v1, v2) -> apply[Ite](eqExp(v1, v2), op, v1, v2) lookvar(x', Cons(x, xs), vs) -> lookvar[Ite](!EQ(x', x), x', Cons(x, xs), vs) eqOps(o1, o2) -> True The (relative) TRS S consists of the following rules: !EQ(S(x), S(y)) -> !EQ(x, y) !EQ(0', S(y)) -> False !EQ(S(x), 0') -> False !EQ(0', 0') -> True and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True eeval[False][Ite](True, Eq(f, s), ns, vs, p) -> eeval[True][Ite](eqExp(eeval(f, ns, vs, p), eeval(s, ns, vs, p)), Eq(f, s), ns, vs, p) lookvar[Ite](False, x', Cons(x'', xs'), Cons(x, xs)) -> lookvar(x', xs', xs) lookname[Ite](True, f, Cons(Fun(n, e), xs)) -> n lookbody[Ite](True, f, Cons(Fun(n, e), xs)) -> e eeval[False][Ite](False, Fun(n, e), ns, vs, p) -> eeval[False][Let](Fun(n, e), ns, vs, p, lookbody(n, p)) eeval[Ite](False, ITE'(i, t, e), ns, vs, p) -> eeval(e, ns, vs, p) eeval[Ite](True, ITE'(i, t, e), ns, vs, p) -> eeval(t, ns, vs, p) eeval[False][Let](Fun(n, e), ns, vs, p, ef) -> eeval[False][Let][Let](Fun(n, e), ns, vs, p, ef, lookname(n, p)) eeval[False][Let][Let](Fun(n, e), ns, vs, p, ef, nf) -> eeval[Let][Let][Let](Fun(n, e), ns, vs, p, ef, nf, eeval(e, ns, vs, p)) eeval[Let](Bsf(op, t1, t2), ns, vs, p, v1) -> eeval[Let][Let](Bsf(op, t1, t2), ns, vs, p, v1, eeval(t2, ns, vs, p)) eeval[Let][Let](Bsf(op, t1, t2), ns, vs, p, v1, v2) -> apply(op, v1, v2) lookvar[Ite](True, x', ns, Cons(x, xs)) -> x lookname[Ite](False, f, Cons(x, xs)) -> lookname(f, xs) lookbody[Ite](False, f, Cons(x, xs)) -> lookbody(f, xs) eeval[True][Ite](False, e, ns, vs, p) -> F eeval[True][Ite](True, e, ns, vs, p) -> T apply[Ite](False, op, v1, v2) -> F apply[Ite](True, op, v1, v2) -> T run[Let][Let](p, input, f0, ef) -> run[Let](p, input, f0, ef, lookname(f0, p)) run[Let](p, input, f0, ef, nf) -> eeval(ef, Cons(nf, Nil), Cons(input, Nil), p) eeval[Let][Let][Let](e, ns, vs, p, ef, nf, v) -> eeval(ef, Cons(nf, Nil), Cons(v, Nil), p) Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (5) RelTrsToTrsProof (UPPER BOUND(ID)) transformed relative TRS to TRS ---------------------------------------- (6) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: eeval(Fun(n, e), ns, vs, p) -> eeval[False][Let](Fun(n, e), ns, vs, p, lookbody(n, p)) eeval(Eq(f, s), ns, vs, p) -> eeval[True][Ite](eqExp(eeval(f, ns, vs, p), eeval(s, ns, vs, p)), Eq(f, s), ns, vs, p) eeval(Error(e11, e12), ns, vs, p) -> eeval[False][Ite](False, Error(e11, e12), ns, vs, p) eeval(F, ns, vs, p) -> F eeval(T, ns, vs, p) -> T eeval(ITE(i, t, e), ns, vs, p) -> eeval[Ite](checkConstrExp(eeval(i, ns, vs, p), T), ITE(i, t, e), ns, vs, p) eeval(Bsf(op, t1, t2), ns, vs, p) -> eeval[Let](Bsf(op, t1, t2), ns, vs, p, eeval(t1, ns, vs, p)) eeval(Var(int), ns, vs, p) -> lookvar(int, ns, vs) run(Cons(Fun(f0, e), xs), input) -> run[Let][Let](Cons(Fun(f0, e), xs), input, f0, lookbody(f0, Cons(Fun(f0, e), xs))) eqExp(Error(e11, e12), Error(e21, e22)) -> and(eqExp(e11, e21), eqExp(e12, e22)) eqExp(Error(e11, e12), F) -> False eqExp(Error(e11, e12), T) -> False eqExp(Error(e11, e12), Fun(fn2, fe2)) -> False eqExp(Error(e11, e12), Eq(eq21, eq22)) -> False eqExp(Error(e11, e12), ITE(i2, t2, e2)) -> False eqExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False eqExp(Error(e11, e12), Var(v2)) -> False eqExp(F, Error(e21, e22)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(fn2, fe2)) -> False eqExp(F, Eq(eq21, eq22)) -> False eqExp(F, ITE(i2, t2, e2)) -> False eqExp(F, Bsf(op2, b21, b22)) -> False eqExp(F, Var(v2)) -> False eqExp(T, Error(e21, e22)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(fn2, fe2)) -> False eqExp(T, Eq(eq21, eq22)) -> False eqExp(T, ITE(i2, t2, e2)) -> False eqExp(T, Bsf(op2, b21, b22)) -> False eqExp(T, Var(v2)) -> False eqExp(Fun(fn1, fe1), Error(e21, e22)) -> False eqExp(Fun(fn1, fe1), F) -> False eqExp(Fun(fn1, fe1), T) -> False eqExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> and(!EQ(fn1, fn2), eqExp(fe1, fe2)) eqExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False eqExp(Fun(fn1, fe1), ITE(i2, t2, e2)) -> False eqExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False eqExp(Fun(fn1, fe1), Var(v2)) -> False eqExp(Eq(eq11, eq12), Error(e21, e22)) -> False eqExp(Eq(eq11, eq12), F) -> False eqExp(Eq(eq11, eq12), T) -> False eqExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False eqExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> and(eqExp(eq11, eq21), eqExp(eq12, eq22)) eqExp(Eq(eq11, eq12), ITE(i2, t2, e2)) -> False eqExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False eqExp(Eq(eq11, eq12), Var(v2)) -> False eqExp(ITE(i1, t1, e1), Error(e21, e22)) -> False eqExp(ITE(i1, t1, e1), F) -> False eqExp(ITE(i1, t1, e1), T) -> False eqExp(ITE(i1, t1, e1), Fun(fn2, fe2)) -> False eqExp(ITE(i1, t1, e1), Eq(eq21, eq22)) -> False eqExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> and(eqExp(i1, i2), and(eqExp(t1, t2), eqExp(e1, e2))) eqExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> False eqExp(ITE(i1, t1, e1), Var(v2)) -> False eqExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False eqExp(Bsf(op1, b11, b12), F) -> False eqExp(Bsf(op1, b11, b12), T) -> False eqExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False eqExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False eqExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> False eqExp(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> and(True, and(eqExp(b11, b21), eqExp(b12, b22))) eqExp(Bsf(op1, b11, b12), Var(v2)) -> False eqExp(Var(v1), Error(e21, e22)) -> False eqExp(Var(v1), F) -> False eqExp(Var(v1), T) -> False eqExp(Var(v1), Fun(fn2, fe2)) -> False eqExp(Var(v1), Eq(eq21, eq22)) -> False eqExp(Var(v1), ITE(i2, t2, e2)) -> False eqExp(Var(v1), Bsf(op2, b21, b22)) -> False eqExp(Var(v1), Var(v2)) -> !EQ(v1, v2) checkConstrExp(Error(e11, e12), Error(e21, e22)) -> True checkConstrExp(Error(e11, e12), F) -> False checkConstrExp(Error(e11, e12), T) -> False checkConstrExp(Error(e11, e12), Fun(fn2, fe2)) -> False checkConstrExp(Error(e11, e12), Eq(eq21, eq22)) -> False checkConstrExp(Error(e11, e12), ITE(i2, t2, e2)) -> False checkConstrExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False checkConstrExp(Error(e11, e12), Var(v2)) -> False checkConstrExp(F, Error(e21, e22)) -> False checkConstrExp(F, F) -> True checkConstrExp(F, T) -> False checkConstrExp(F, Fun(fn2, fe2)) -> False checkConstrExp(F, Eq(eq21, eq22)) -> False checkConstrExp(F, ITE(i2, t2, e2)) -> False checkConstrExp(F, Bsf(op2, b21, b22)) -> False checkConstrExp(F, Var(v2)) -> False checkConstrExp(T, Error(e21, e22)) -> False checkConstrExp(T, F) -> False checkConstrExp(T, T) -> True checkConstrExp(T, Fun(fn2, fe2)) -> False checkConstrExp(T, Eq(eq21, eq22)) -> False checkConstrExp(T, ITE(i2, t2, e2)) -> False checkConstrExp(T, Bsf(op2, b21, b22)) -> False checkConstrExp(T, Var(v2)) -> False checkConstrExp(Fun(fn1, fe1), Error(e21, e22)) -> False checkConstrExp(Fun(fn1, fe1), F) -> False checkConstrExp(Fun(fn1, fe1), T) -> False checkConstrExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> True checkConstrExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False checkConstrExp(Fun(fn1, fe1), ITE(i2, t2, e2)) -> False checkConstrExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False checkConstrExp(Fun(fn1, fe1), Var(v2)) -> False checkConstrExp(Eq(eq11, eq12), Error(e21, e22)) -> False checkConstrExp(Eq(eq11, eq12), F) -> False checkConstrExp(Eq(eq11, eq12), T) -> False checkConstrExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False checkConstrExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> True checkConstrExp(Eq(eq11, eq12), ITE(i2, t2, e2)) -> False checkConstrExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False checkConstrExp(Eq(eq11, eq12), Var(v2)) -> False checkConstrExp(ITE(i1, t1, e1), Error(e21, e22)) -> False checkConstrExp(ITE(i1, t1, e1), F) -> False checkConstrExp(ITE(i1, t1, e1), T) -> False checkConstrExp(ITE(i1, t1, e1), Fun(fn2, fe2)) -> False checkConstrExp(ITE(i1, t1, e1), Eq(eq21, eq22)) -> False checkConstrExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> True checkConstrExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> False checkConstrExp(ITE(i1, t1, e1), Var(v2)) -> False checkConstrExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False checkConstrExp(Bsf(op1, b11, b12), F) -> False checkConstrExp(Bsf(op1, b11, b12), T) -> False checkConstrExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False checkConstrExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False checkConstrExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> False checkConstrExp(Bsf(op1, b11, b12), Bsf(op2, b21, b22)) -> True checkConstrExp(Bsf(op1, b11, b12), Var(v2)) -> False checkConstrExp(Var(v1), Error(e21, e22)) -> False checkConstrExp(Var(v1), F) -> False checkConstrExp(Var(v1), T) -> False checkConstrExp(Var(v1), Fun(fn2, fe2)) -> False checkConstrExp(Var(v1), Eq(eq21, eq22)) -> False checkConstrExp(Var(v1), ITE(i2, t2, e2)) -> False checkConstrExp(Var(v1), Bsf(op2, b21, b22)) -> False checkConstrExp(Var(v1), Var(v2)) -> True lookname(f, Cons(Fun(n, e), xs)) -> lookname[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) lookbody(f, Cons(Fun(n, e), xs)) -> lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) getVar(Var(int)) -> int getIfTrue(ITE(i, t, e)) -> t getIfGuard(ITE(i, t, e)) -> i getIfFalse(ITE(i, t, e)) -> e getFuncName(Fun(n, e)) -> n getFuncExp(Fun(n, e)) -> e getEqSecond(Eq(f, s)) -> s getEqFirst(Eq(f, s)) -> f getConst(Cst(int)) -> int getBsfSecondTerm(Bsf(op, t1, t2)) -> t2 getBsfOp(Bsf(op, t1, t2)) -> op getBsfFirstTerm(Bsf(op, t1, t2)) -> t1 apply(op, v1, v2) -> apply[Ite](eqExp(v1, v2), op, v1, v2) lookvar(x', Cons(x, xs), vs) -> lookvar[Ite](!EQ(x', x), x', Cons(x, xs), vs) eqOps(o1, o2) -> True !EQ(S(x), S(y)) -> !EQ(x, y) !EQ(0, S(y)) -> False !EQ(S(x), 0) -> False !EQ(0, 0) -> True and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True eeval[False][Ite](True, Eq(f, s), ns, vs, p) -> eeval[True][Ite](eqExp(eeval(f, ns, vs, p), eeval(s, ns, vs, p)), Eq(f, s), ns, vs, p) lookvar[Ite](False, x', Cons(x'', xs'), Cons(x, xs)) -> lookvar(x', xs', xs) lookname[Ite](True, f, Cons(Fun(n, e), xs)) -> n lookbody[Ite](True, f, Cons(Fun(n, e), xs)) -> e eeval[False][Ite](False, Fun(n, e), ns, vs, p) -> eeval[False][Let](Fun(n, e), ns, vs, p, lookbody(n, p)) eeval[Ite](False, ITE(i, t, e), ns, vs, p) -> eeval(e, ns, vs, p) eeval[Ite](True, ITE(i, t, e), ns, vs, p) -> eeval(t, ns, vs, p) eeval[False][Let](Fun(n, e), ns, vs, p, ef) -> eeval[False][Let][Let](Fun(n, e), ns, vs, p, ef, lookname(n, p)) eeval[False][Let][Let](Fun(n, e), ns, vs, p, ef, nf) -> eeval[Let][Let][Let](Fun(n, e), ns, vs, p, ef, nf, eeval(e, ns, vs, p)) eeval[Let](Bsf(op, t1, t2), ns, vs, p, v1) -> eeval[Let][Let](Bsf(op, t1, t2), ns, vs, p, v1, eeval(t2, ns, vs, p)) eeval[Let][Let](Bsf(op, t1, t2), ns, vs, p, v1, v2) -> apply(op, v1, v2) lookvar[Ite](True, x', ns, Cons(x, xs)) -> x lookname[Ite](False, f, Cons(x, xs)) -> lookname(f, xs) lookbody[Ite](False, f, Cons(x, xs)) -> lookbody(f, xs) eeval[True][Ite](False, e, ns, vs, p) -> F eeval[True][Ite](True, e, ns, vs, p) -> T apply[Ite](False, op, v1, v2) -> F apply[Ite](True, op, v1, v2) -> T run[Let][Let](p, input, f0, ef) -> run[Let](p, input, f0, ef, lookname(f0, p)) run[Let](p, input, f0, ef, nf) -> eeval(ef, Cons(nf, Nil), Cons(input, Nil), p) eeval[Let][Let][Let](e, ns, vs, p, ef, nf, v) -> eeval(ef, Cons(nf, Nil), Cons(v, Nil), p) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (7) RelTrsToWeightedTrsProof (UPPER BOUND(ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (8) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: eeval(Fun(n, e), ns, vs, p) -> eeval[False][Let](Fun(n, e), ns, vs, p, lookbody(n, p)) [1] eeval(Eq(f, s), ns, vs, p) -> eeval[True][Ite](eqExp(eeval(f, ns, vs, p), eeval(s, ns, vs, p)), Eq(f, s), ns, vs, p) [1] eeval(Error(e11, e12), ns, vs, p) -> eeval[False][Ite](False, Error(e11, e12), ns, vs, p) [1] eeval(F, ns, vs, p) -> F [1] eeval(T, ns, vs, p) -> T [1] eeval(ITE(i, t, e), ns, vs, p) -> eeval[Ite](checkConstrExp(eeval(i, ns, vs, p), T), ITE(i, t, e), ns, vs, p) [1] eeval(Bsf(op, t1, t2), ns, vs, p) -> eeval[Let](Bsf(op, t1, t2), ns, vs, p, eeval(t1, ns, vs, p)) [1] eeval(Var(int), ns, vs, p) -> lookvar(int, ns, vs) [1] run(Cons(Fun(f0, e), xs), input) -> run[Let][Let](Cons(Fun(f0, e), xs), input, f0, lookbody(f0, Cons(Fun(f0, e), xs))) [1] eqExp(Error(e11, e12), Error(e21, e22)) -> and(eqExp(e11, e21), eqExp(e12, e22)) [1] eqExp(Error(e11, e12), F) -> False [1] eqExp(Error(e11, e12), T) -> False [1] eqExp(Error(e11, e12), Fun(fn2, fe2)) -> False [1] eqExp(Error(e11, e12), Eq(eq21, eq22)) -> False [1] eqExp(Error(e11, e12), ITE(i2, t2, e2)) -> False [1] eqExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False [1] eqExp(Error(e11, e12), Var(v2)) -> False [1] eqExp(F, Error(e21, e22)) -> False [1] eqExp(F, F) -> True [1] eqExp(F, T) -> False [1] eqExp(F, Fun(fn2, fe2)) -> False [1] eqExp(F, Eq(eq21, eq22)) -> False [1] eqExp(F, ITE(i2, t2, e2)) -> False [1] eqExp(F, Bsf(op2, b21, b22)) -> False [1] eqExp(F, Var(v2)) -> False [1] eqExp(T, Error(e21, e22)) -> False [1] eqExp(T, F) -> False [1] eqExp(T, T) -> True [1] eqExp(T, Fun(fn2, fe2)) -> False [1] eqExp(T, Eq(eq21, eq22)) -> False [1] eqExp(T, ITE(i2, t2, e2)) -> False [1] eqExp(T, Bsf(op2, b21, b22)) -> False [1] eqExp(T, Var(v2)) -> False [1] eqExp(Fun(fn1, fe1), Error(e21, e22)) -> False [1] eqExp(Fun(fn1, fe1), F) -> False [1] eqExp(Fun(fn1, fe1), T) -> False [1] eqExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> and(!EQ(fn1, fn2), eqExp(fe1, fe2)) [1] eqExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False [1] eqExp(Fun(fn1, fe1), ITE(i2, t2, e2)) -> False [1] eqExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False [1] eqExp(Fun(fn1, fe1), Var(v2)) -> False [1] eqExp(Eq(eq11, eq12), Error(e21, e22)) -> False [1] eqExp(Eq(eq11, eq12), F) -> False [1] eqExp(Eq(eq11, eq12), T) -> False [1] eqExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False [1] eqExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> and(eqExp(eq11, eq21), eqExp(eq12, eq22)) [1] eqExp(Eq(eq11, eq12), ITE(i2, t2, e2)) -> False [1] eqExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False [1] eqExp(Eq(eq11, eq12), Var(v2)) -> False [1] eqExp(ITE(i1, t1, e1), Error(e21, e22)) -> False [1] eqExp(ITE(i1, t1, e1), F) -> False [1] eqExp(ITE(i1, t1, e1), T) -> False [1] eqExp(ITE(i1, t1, e1), Fun(fn2, fe2)) -> False [1] eqExp(ITE(i1, t1, e1), Eq(eq21, eq22)) -> False [1] eqExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> and(eqExp(i1, i2), and(eqExp(t1, t2), eqExp(e1, e2))) [1] eqExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> False [1] eqExp(ITE(i1, t1, e1), Var(v2)) -> False [1] eqExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False [1] eqExp(Bsf(op1, b11, b12), F) -> False [1] eqExp(Bsf(op1, b11, b12), T) -> False [1] eqExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False [1] eqExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False [1] eqExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> False [1] eqExp(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> and(True, and(eqExp(b11, b21), eqExp(b12, b22))) [1] eqExp(Bsf(op1, b11, b12), Var(v2)) -> False [1] eqExp(Var(v1), Error(e21, e22)) -> False [1] eqExp(Var(v1), F) -> False [1] eqExp(Var(v1), T) -> False [1] eqExp(Var(v1), Fun(fn2, fe2)) -> False [1] eqExp(Var(v1), Eq(eq21, eq22)) -> False [1] eqExp(Var(v1), ITE(i2, t2, e2)) -> False [1] eqExp(Var(v1), Bsf(op2, b21, b22)) -> False [1] eqExp(Var(v1), Var(v2)) -> !EQ(v1, v2) [1] checkConstrExp(Error(e11, e12), Error(e21, e22)) -> True [1] checkConstrExp(Error(e11, e12), F) -> False [1] checkConstrExp(Error(e11, e12), T) -> False [1] checkConstrExp(Error(e11, e12), Fun(fn2, fe2)) -> False [1] checkConstrExp(Error(e11, e12), Eq(eq21, eq22)) -> False [1] checkConstrExp(Error(e11, e12), ITE(i2, t2, e2)) -> False [1] checkConstrExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False [1] checkConstrExp(Error(e11, e12), Var(v2)) -> False [1] checkConstrExp(F, Error(e21, e22)) -> False [1] checkConstrExp(F, F) -> True [1] checkConstrExp(F, T) -> False [1] checkConstrExp(F, Fun(fn2, fe2)) -> False [1] checkConstrExp(F, Eq(eq21, eq22)) -> False [1] checkConstrExp(F, ITE(i2, t2, e2)) -> False [1] checkConstrExp(F, Bsf(op2, b21, b22)) -> False [1] checkConstrExp(F, Var(v2)) -> False [1] checkConstrExp(T, Error(e21, e22)) -> False [1] checkConstrExp(T, F) -> False [1] checkConstrExp(T, T) -> True [1] checkConstrExp(T, Fun(fn2, fe2)) -> False [1] checkConstrExp(T, Eq(eq21, eq22)) -> False [1] checkConstrExp(T, ITE(i2, t2, e2)) -> False [1] checkConstrExp(T, Bsf(op2, b21, b22)) -> False [1] checkConstrExp(T, Var(v2)) -> False [1] checkConstrExp(Fun(fn1, fe1), Error(e21, e22)) -> False [1] checkConstrExp(Fun(fn1, fe1), F) -> False [1] checkConstrExp(Fun(fn1, fe1), T) -> False [1] checkConstrExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> True [1] checkConstrExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False [1] checkConstrExp(Fun(fn1, fe1), ITE(i2, t2, e2)) -> False [1] checkConstrExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False [1] checkConstrExp(Fun(fn1, fe1), Var(v2)) -> False [1] checkConstrExp(Eq(eq11, eq12), Error(e21, e22)) -> False [1] checkConstrExp(Eq(eq11, eq12), F) -> False [1] checkConstrExp(Eq(eq11, eq12), T) -> False [1] checkConstrExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False [1] checkConstrExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> True [1] checkConstrExp(Eq(eq11, eq12), ITE(i2, t2, e2)) -> False [1] checkConstrExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False [1] checkConstrExp(Eq(eq11, eq12), Var(v2)) -> False [1] checkConstrExp(ITE(i1, t1, e1), Error(e21, e22)) -> False [1] checkConstrExp(ITE(i1, t1, e1), F) -> False [1] checkConstrExp(ITE(i1, t1, e1), T) -> False [1] checkConstrExp(ITE(i1, t1, e1), Fun(fn2, fe2)) -> False [1] checkConstrExp(ITE(i1, t1, e1), Eq(eq21, eq22)) -> False [1] checkConstrExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> True [1] checkConstrExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> False [1] checkConstrExp(ITE(i1, t1, e1), Var(v2)) -> False [1] checkConstrExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False [1] checkConstrExp(Bsf(op1, b11, b12), F) -> False [1] checkConstrExp(Bsf(op1, b11, b12), T) -> False [1] checkConstrExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False [1] checkConstrExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False [1] checkConstrExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> False [1] checkConstrExp(Bsf(op1, b11, b12), Bsf(op2, b21, b22)) -> True [1] checkConstrExp(Bsf(op1, b11, b12), Var(v2)) -> False [1] checkConstrExp(Var(v1), Error(e21, e22)) -> False [1] checkConstrExp(Var(v1), F) -> False [1] checkConstrExp(Var(v1), T) -> False [1] checkConstrExp(Var(v1), Fun(fn2, fe2)) -> False [1] checkConstrExp(Var(v1), Eq(eq21, eq22)) -> False [1] checkConstrExp(Var(v1), ITE(i2, t2, e2)) -> False [1] checkConstrExp(Var(v1), Bsf(op2, b21, b22)) -> False [1] checkConstrExp(Var(v1), Var(v2)) -> True [1] lookname(f, Cons(Fun(n, e), xs)) -> lookname[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) [1] lookbody(f, Cons(Fun(n, e), xs)) -> lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) [1] getVar(Var(int)) -> int [1] getIfTrue(ITE(i, t, e)) -> t [1] getIfGuard(ITE(i, t, e)) -> i [1] getIfFalse(ITE(i, t, e)) -> e [1] getFuncName(Fun(n, e)) -> n [1] getFuncExp(Fun(n, e)) -> e [1] getEqSecond(Eq(f, s)) -> s [1] getEqFirst(Eq(f, s)) -> f [1] getConst(Cst(int)) -> int [1] getBsfSecondTerm(Bsf(op, t1, t2)) -> t2 [1] getBsfOp(Bsf(op, t1, t2)) -> op [1] getBsfFirstTerm(Bsf(op, t1, t2)) -> t1 [1] apply(op, v1, v2) -> apply[Ite](eqExp(v1, v2), op, v1, v2) [1] lookvar(x', Cons(x, xs), vs) -> lookvar[Ite](!EQ(x', x), x', Cons(x, xs), vs) [1] eqOps(o1, o2) -> True [1] !EQ(S(x), S(y)) -> !EQ(x, y) [0] !EQ(0, S(y)) -> False [0] !EQ(S(x), 0) -> False [0] !EQ(0, 0) -> True [0] and(False, False) -> False [0] and(True, False) -> False [0] and(False, True) -> False [0] and(True, True) -> True [0] eeval[False][Ite](True, Eq(f, s), ns, vs, p) -> eeval[True][Ite](eqExp(eeval(f, ns, vs, p), eeval(s, ns, vs, p)), Eq(f, s), ns, vs, p) [0] lookvar[Ite](False, x', Cons(x'', xs'), Cons(x, xs)) -> lookvar(x', xs', xs) [0] lookname[Ite](True, f, Cons(Fun(n, e), xs)) -> n [0] lookbody[Ite](True, f, Cons(Fun(n, e), xs)) -> e [0] eeval[False][Ite](False, Fun(n, e), ns, vs, p) -> eeval[False][Let](Fun(n, e), ns, vs, p, lookbody(n, p)) [0] eeval[Ite](False, ITE(i, t, e), ns, vs, p) -> eeval(e, ns, vs, p) [0] eeval[Ite](True, ITE(i, t, e), ns, vs, p) -> eeval(t, ns, vs, p) [0] eeval[False][Let](Fun(n, e), ns, vs, p, ef) -> eeval[False][Let][Let](Fun(n, e), ns, vs, p, ef, lookname(n, p)) [0] eeval[False][Let][Let](Fun(n, e), ns, vs, p, ef, nf) -> eeval[Let][Let][Let](Fun(n, e), ns, vs, p, ef, nf, eeval(e, ns, vs, p)) [0] eeval[Let](Bsf(op, t1, t2), ns, vs, p, v1) -> eeval[Let][Let](Bsf(op, t1, t2), ns, vs, p, v1, eeval(t2, ns, vs, p)) [0] eeval[Let][Let](Bsf(op, t1, t2), ns, vs, p, v1, v2) -> apply(op, v1, v2) [0] lookvar[Ite](True, x', ns, Cons(x, xs)) -> x [0] lookname[Ite](False, f, Cons(x, xs)) -> lookname(f, xs) [0] lookbody[Ite](False, f, Cons(x, xs)) -> lookbody(f, xs) [0] eeval[True][Ite](False, e, ns, vs, p) -> F [0] eeval[True][Ite](True, e, ns, vs, p) -> T [0] apply[Ite](False, op, v1, v2) -> F [0] apply[Ite](True, op, v1, v2) -> T [0] run[Let][Let](p, input, f0, ef) -> run[Let](p, input, f0, ef, lookname(f0, p)) [0] run[Let](p, input, f0, ef, nf) -> eeval(ef, Cons(nf, Nil), Cons(input, Nil), p) [0] eeval[Let][Let][Let](e, ns, vs, p, ef, nf, v) -> eeval(ef, Cons(nf, Nil), Cons(v, Nil), p) [0] Rewrite Strategy: INNERMOST ---------------------------------------- (9) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (10) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: eeval(Fun(n, e), ns, vs, p) -> eeval[False][Let](Fun(n, e), ns, vs, p, lookbody(n, p)) [1] eeval(Eq(f, s), ns, vs, p) -> eeval[True][Ite](eqExp(eeval(f, ns, vs, p), eeval(s, ns, vs, p)), Eq(f, s), ns, vs, p) [1] eeval(Error(e11, e12), ns, vs, p) -> eeval[False][Ite](False, Error(e11, e12), ns, vs, p) [1] eeval(F, ns, vs, p) -> F [1] eeval(T, ns, vs, p) -> T [1] eeval(ITE(i, t, e), ns, vs, p) -> eeval[Ite](checkConstrExp(eeval(i, ns, vs, p), T), ITE(i, t, e), ns, vs, p) [1] eeval(Bsf(op, t1, t2), ns, vs, p) -> eeval[Let](Bsf(op, t1, t2), ns, vs, p, eeval(t1, ns, vs, p)) [1] eeval(Var(int), ns, vs, p) -> lookvar(int, ns, vs) [1] run(Cons(Fun(f0, e), xs), input) -> run[Let][Let](Cons(Fun(f0, e), xs), input, f0, lookbody(f0, Cons(Fun(f0, e), xs))) [1] eqExp(Error(e11, e12), Error(e21, e22)) -> and(eqExp(e11, e21), eqExp(e12, e22)) [1] eqExp(Error(e11, e12), F) -> False [1] eqExp(Error(e11, e12), T) -> False [1] eqExp(Error(e11, e12), Fun(fn2, fe2)) -> False [1] eqExp(Error(e11, e12), Eq(eq21, eq22)) -> False [1] eqExp(Error(e11, e12), ITE(i2, t2, e2)) -> False [1] eqExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False [1] eqExp(Error(e11, e12), Var(v2)) -> False [1] eqExp(F, Error(e21, e22)) -> False [1] eqExp(F, F) -> True [1] eqExp(F, T) -> False [1] eqExp(F, Fun(fn2, fe2)) -> False [1] eqExp(F, Eq(eq21, eq22)) -> False [1] eqExp(F, ITE(i2, t2, e2)) -> False [1] eqExp(F, Bsf(op2, b21, b22)) -> False [1] eqExp(F, Var(v2)) -> False [1] eqExp(T, Error(e21, e22)) -> False [1] eqExp(T, F) -> False [1] eqExp(T, T) -> True [1] eqExp(T, Fun(fn2, fe2)) -> False [1] eqExp(T, Eq(eq21, eq22)) -> False [1] eqExp(T, ITE(i2, t2, e2)) -> False [1] eqExp(T, Bsf(op2, b21, b22)) -> False [1] eqExp(T, Var(v2)) -> False [1] eqExp(Fun(fn1, fe1), Error(e21, e22)) -> False [1] eqExp(Fun(fn1, fe1), F) -> False [1] eqExp(Fun(fn1, fe1), T) -> False [1] eqExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> and(!EQ(fn1, fn2), eqExp(fe1, fe2)) [1] eqExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False [1] eqExp(Fun(fn1, fe1), ITE(i2, t2, e2)) -> False [1] eqExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False [1] eqExp(Fun(fn1, fe1), Var(v2)) -> False [1] eqExp(Eq(eq11, eq12), Error(e21, e22)) -> False [1] eqExp(Eq(eq11, eq12), F) -> False [1] eqExp(Eq(eq11, eq12), T) -> False [1] eqExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False [1] eqExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> and(eqExp(eq11, eq21), eqExp(eq12, eq22)) [1] eqExp(Eq(eq11, eq12), ITE(i2, t2, e2)) -> False [1] eqExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False [1] eqExp(Eq(eq11, eq12), Var(v2)) -> False [1] eqExp(ITE(i1, t1, e1), Error(e21, e22)) -> False [1] eqExp(ITE(i1, t1, e1), F) -> False [1] eqExp(ITE(i1, t1, e1), T) -> False [1] eqExp(ITE(i1, t1, e1), Fun(fn2, fe2)) -> False [1] eqExp(ITE(i1, t1, e1), Eq(eq21, eq22)) -> False [1] eqExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> and(eqExp(i1, i2), and(eqExp(t1, t2), eqExp(e1, e2))) [1] eqExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> False [1] eqExp(ITE(i1, t1, e1), Var(v2)) -> False [1] eqExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False [1] eqExp(Bsf(op1, b11, b12), F) -> False [1] eqExp(Bsf(op1, b11, b12), T) -> False [1] eqExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False [1] eqExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False [1] eqExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> False [1] eqExp(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> and(True, and(eqExp(b11, b21), eqExp(b12, b22))) [1] eqExp(Bsf(op1, b11, b12), Var(v2)) -> False [1] eqExp(Var(v1), Error(e21, e22)) -> False [1] eqExp(Var(v1), F) -> False [1] eqExp(Var(v1), T) -> False [1] eqExp(Var(v1), Fun(fn2, fe2)) -> False [1] eqExp(Var(v1), Eq(eq21, eq22)) -> False [1] eqExp(Var(v1), ITE(i2, t2, e2)) -> False [1] eqExp(Var(v1), Bsf(op2, b21, b22)) -> False [1] eqExp(Var(v1), Var(v2)) -> !EQ(v1, v2) [1] checkConstrExp(Error(e11, e12), Error(e21, e22)) -> True [1] checkConstrExp(Error(e11, e12), F) -> False [1] checkConstrExp(Error(e11, e12), T) -> False [1] checkConstrExp(Error(e11, e12), Fun(fn2, fe2)) -> False [1] checkConstrExp(Error(e11, e12), Eq(eq21, eq22)) -> False [1] checkConstrExp(Error(e11, e12), ITE(i2, t2, e2)) -> False [1] checkConstrExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False [1] checkConstrExp(Error(e11, e12), Var(v2)) -> False [1] checkConstrExp(F, Error(e21, e22)) -> False [1] checkConstrExp(F, F) -> True [1] checkConstrExp(F, T) -> False [1] checkConstrExp(F, Fun(fn2, fe2)) -> False [1] checkConstrExp(F, Eq(eq21, eq22)) -> False [1] checkConstrExp(F, ITE(i2, t2, e2)) -> False [1] checkConstrExp(F, Bsf(op2, b21, b22)) -> False [1] checkConstrExp(F, Var(v2)) -> False [1] checkConstrExp(T, Error(e21, e22)) -> False [1] checkConstrExp(T, F) -> False [1] checkConstrExp(T, T) -> True [1] checkConstrExp(T, Fun(fn2, fe2)) -> False [1] checkConstrExp(T, Eq(eq21, eq22)) -> False [1] checkConstrExp(T, ITE(i2, t2, e2)) -> False [1] checkConstrExp(T, Bsf(op2, b21, b22)) -> False [1] checkConstrExp(T, Var(v2)) -> False [1] checkConstrExp(Fun(fn1, fe1), Error(e21, e22)) -> False [1] checkConstrExp(Fun(fn1, fe1), F) -> False [1] checkConstrExp(Fun(fn1, fe1), T) -> False [1] checkConstrExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> True [1] checkConstrExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False [1] checkConstrExp(Fun(fn1, fe1), ITE(i2, t2, e2)) -> False [1] checkConstrExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False [1] checkConstrExp(Fun(fn1, fe1), Var(v2)) -> False [1] checkConstrExp(Eq(eq11, eq12), Error(e21, e22)) -> False [1] checkConstrExp(Eq(eq11, eq12), F) -> False [1] checkConstrExp(Eq(eq11, eq12), T) -> False [1] checkConstrExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False [1] checkConstrExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> True [1] checkConstrExp(Eq(eq11, eq12), ITE(i2, t2, e2)) -> False [1] checkConstrExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False [1] checkConstrExp(Eq(eq11, eq12), Var(v2)) -> False [1] checkConstrExp(ITE(i1, t1, e1), Error(e21, e22)) -> False [1] checkConstrExp(ITE(i1, t1, e1), F) -> False [1] checkConstrExp(ITE(i1, t1, e1), T) -> False [1] checkConstrExp(ITE(i1, t1, e1), Fun(fn2, fe2)) -> False [1] checkConstrExp(ITE(i1, t1, e1), Eq(eq21, eq22)) -> False [1] checkConstrExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> True [1] checkConstrExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> False [1] checkConstrExp(ITE(i1, t1, e1), Var(v2)) -> False [1] checkConstrExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False [1] checkConstrExp(Bsf(op1, b11, b12), F) -> False [1] checkConstrExp(Bsf(op1, b11, b12), T) -> False [1] checkConstrExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False [1] checkConstrExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False [1] checkConstrExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> False [1] checkConstrExp(Bsf(op1, b11, b12), Bsf(op2, b21, b22)) -> True [1] checkConstrExp(Bsf(op1, b11, b12), Var(v2)) -> False [1] checkConstrExp(Var(v1), Error(e21, e22)) -> False [1] checkConstrExp(Var(v1), F) -> False [1] checkConstrExp(Var(v1), T) -> False [1] checkConstrExp(Var(v1), Fun(fn2, fe2)) -> False [1] checkConstrExp(Var(v1), Eq(eq21, eq22)) -> False [1] checkConstrExp(Var(v1), ITE(i2, t2, e2)) -> False [1] checkConstrExp(Var(v1), Bsf(op2, b21, b22)) -> False [1] checkConstrExp(Var(v1), Var(v2)) -> True [1] lookname(f, Cons(Fun(n, e), xs)) -> lookname[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) [1] lookbody(f, Cons(Fun(n, e), xs)) -> lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) [1] getVar(Var(int)) -> int [1] getIfTrue(ITE(i, t, e)) -> t [1] getIfGuard(ITE(i, t, e)) -> i [1] getIfFalse(ITE(i, t, e)) -> e [1] getFuncName(Fun(n, e)) -> n [1] getFuncExp(Fun(n, e)) -> e [1] getEqSecond(Eq(f, s)) -> s [1] getEqFirst(Eq(f, s)) -> f [1] getConst(Cst(int)) -> int [1] getBsfSecondTerm(Bsf(op, t1, t2)) -> t2 [1] getBsfOp(Bsf(op, t1, t2)) -> op [1] getBsfFirstTerm(Bsf(op, t1, t2)) -> t1 [1] apply(op, v1, v2) -> apply[Ite](eqExp(v1, v2), op, v1, v2) [1] lookvar(x', Cons(x, xs), vs) -> lookvar[Ite](!EQ(x', x), x', Cons(x, xs), vs) [1] eqOps(o1, o2) -> True [1] !EQ(S(x), S(y)) -> !EQ(x, y) [0] !EQ(0, S(y)) -> False [0] !EQ(S(x), 0) -> False [0] !EQ(0, 0) -> True [0] and(False, False) -> False [0] and(True, False) -> False [0] and(False, True) -> False [0] and(True, True) -> True [0] eeval[False][Ite](True, Eq(f, s), ns, vs, p) -> eeval[True][Ite](eqExp(eeval(f, ns, vs, p), eeval(s, ns, vs, p)), Eq(f, s), ns, vs, p) [0] lookvar[Ite](False, x', Cons(x'', xs'), Cons(x, xs)) -> lookvar(x', xs', xs) [0] lookname[Ite](True, f, Cons(Fun(n, e), xs)) -> n [0] lookbody[Ite](True, f, Cons(Fun(n, e), xs)) -> e [0] eeval[False][Ite](False, Fun(n, e), ns, vs, p) -> eeval[False][Let](Fun(n, e), ns, vs, p, lookbody(n, p)) [0] eeval[Ite](False, ITE(i, t, e), ns, vs, p) -> eeval(e, ns, vs, p) [0] eeval[Ite](True, ITE(i, t, e), ns, vs, p) -> eeval(t, ns, vs, p) [0] eeval[False][Let](Fun(n, e), ns, vs, p, ef) -> eeval[False][Let][Let](Fun(n, e), ns, vs, p, ef, lookname(n, p)) [0] eeval[False][Let][Let](Fun(n, e), ns, vs, p, ef, nf) -> eeval[Let][Let][Let](Fun(n, e), ns, vs, p, ef, nf, eeval(e, ns, vs, p)) [0] eeval[Let](Bsf(op, t1, t2), ns, vs, p, v1) -> eeval[Let][Let](Bsf(op, t1, t2), ns, vs, p, v1, eeval(t2, ns, vs, p)) [0] eeval[Let][Let](Bsf(op, t1, t2), ns, vs, p, v1, v2) -> apply(op, v1, v2) [0] lookvar[Ite](True, x', ns, Cons(x, xs)) -> x [0] lookname[Ite](False, f, Cons(x, xs)) -> lookname(f, xs) [0] lookbody[Ite](False, f, Cons(x, xs)) -> lookbody(f, xs) [0] eeval[True][Ite](False, e, ns, vs, p) -> F [0] eeval[True][Ite](True, e, ns, vs, p) -> T [0] apply[Ite](False, op, v1, v2) -> F [0] apply[Ite](True, op, v1, v2) -> T [0] run[Let][Let](p, input, f0, ef) -> run[Let](p, input, f0, ef, lookname(f0, p)) [0] run[Let](p, input, f0, ef, nf) -> eeval(ef, Cons(nf, Nil), Cons(input, Nil), p) [0] eeval[Let][Let][Let](e, ns, vs, p, ef, nf, v) -> eeval(ef, Cons(nf, Nil), Cons(v, Nil), p) [0] The TRS has the following type information: eeval :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 Fun :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 eeval[False][Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 lookbody :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 Eq :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 eeval[True][Ite] :: False:True -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 eqExp :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> False:True Error :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 eeval[False][Ite] :: False:True -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 False :: False:True F :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 T :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 ITE :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 eeval[Ite] :: False:True -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 checkConstrExp :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> False:True Bsf :: getBsfOp -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 eeval[Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 Var :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 lookvar :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 run :: Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 Cons :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Cons:Nil -> Cons:Nil run[Let][Let] :: Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 and :: False:True -> False:True -> False:True True :: False:True !EQ :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> False:True lookname :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 lookname[Ite] :: False:True -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 lookbody[Ite] :: False:True -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 getVar :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 getIfTrue :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 getIfGuard :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 getIfFalse :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 getFuncName :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 getFuncExp :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 getEqSecond :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 getEqFirst :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 getConst :: Cst -> getConst Cst :: getConst -> Cst getBsfSecondTerm :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 getBsfOp :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> getBsfOp getBsfFirstTerm :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 apply :: getBsfOp -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 apply[Ite] :: False:True -> getBsfOp -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 lookvar[Ite] :: False:True -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 eqOps :: a -> b -> False:True S :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 0 :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 eeval[False][Let][Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 eeval[Let][Let][Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 eeval[Let][Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 run[Let] :: Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0 Nil :: Cons:Nil Rewrite Strategy: INNERMOST ---------------------------------------- (11) CompletionProof (UPPER BOUND(ID)) The transformation into a RNTS is sound, since: (a) The obligation is a constructor system where every type has a constant constructor, (b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols: run_2 getVar_1 getIfTrue_1 getIfGuard_1 getIfFalse_1 getFuncName_1 getFuncExp_1 getEqSecond_1 getEqFirst_1 getConst_1 getBsfSecondTerm_1 getBsfOp_1 getBsfFirstTerm_1 eqOps_2 (c) The following functions are completely defined: eqExp_2 eeval_4 lookbody_2 checkConstrExp_2 lookname_2 lookvar_3 apply_3 !EQ_2 and_2 eeval[False][Ite]_5 lookvar[Ite]_4 lookname[Ite]_3 lookbody[Ite]_3 eeval[Ite]_5 eeval[False][Let]_5 eeval[False][Let][Let]_6 eeval[Let]_5 eeval[Let][Let]_6 eeval[True][Ite]_5 apply[Ite]_4 run[Let][Let]_4 run[Let]_5 eeval[Let][Let][Let]_7 Due to the following rules being added: !EQ(v0, v1) -> null_!EQ [0] and(v0, v1) -> null_and [0] eeval[False][Ite](v0, v1, v2, v3, v4) -> null_eeval[False][Ite] [0] lookvar[Ite](v0, v1, v2, v3) -> null_lookvar[Ite] [0] lookname[Ite](v0, v1, v2) -> null_lookname[Ite] [0] lookbody[Ite](v0, v1, v2) -> null_lookbody[Ite] [0] eeval[Ite](v0, v1, v2, v3, v4) -> null_eeval[Ite] [0] eeval[False][Let](v0, v1, v2, v3, v4) -> null_eeval[False][Let] [0] eeval[False][Let][Let](v0, v1, v2, v3, v4, v5) -> null_eeval[False][Let][Let] [0] eeval[Let](v0, v1, v2, v3, v4) -> null_eeval[Let] [0] eeval[Let][Let](v0, v1, v2, v3, v4, v5) -> null_eeval[Let][Let] [0] eeval[True][Ite](v0, v1, v2, v3, v4) -> null_eeval[True][Ite] [0] apply[Ite](v0, v1, v2, v3) -> null_apply[Ite] [0] run[Let][Let](v0, v1, v2, v3) -> null_run[Let][Let] [0] run[Let](v0, v1, v2, v3, v4) -> null_run[Let] [0] eeval[Let][Let][Let](v0, v1, v2, v3, v4, v5, v6) -> null_eeval[Let][Let][Let] [0] eqExp(v0, v1) -> null_eqExp [0] eeval(v0, v1, v2, v3) -> null_eeval [0] lookbody(v0, v1) -> null_lookbody [0] checkConstrExp(v0, v1) -> null_checkConstrExp [0] lookname(v0, v1) -> null_lookname [0] lookvar(v0, v1, v2) -> null_lookvar [0] And the following fresh constants: null_!EQ, null_and, null_eeval[False][Ite], null_lookvar[Ite], null_lookname[Ite], null_lookbody[Ite], null_eeval[Ite], null_eeval[False][Let], null_eeval[False][Let][Let], null_eeval[Let], null_eeval[Let][Let], null_eeval[True][Ite], null_apply[Ite], null_run[Let][Let], null_run[Let], null_eeval[Let][Let][Let], null_eqExp, null_eeval, null_lookbody, null_checkConstrExp, null_lookname, null_lookvar, const, const1, const2, const3, const4 ---------------------------------------- (12) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: eeval(Fun(n, e), ns, vs, p) -> eeval[False][Let](Fun(n, e), ns, vs, p, lookbody(n, p)) [1] eeval(Eq(f, s), ns, vs, p) -> eeval[True][Ite](eqExp(eeval(f, ns, vs, p), eeval(s, ns, vs, p)), Eq(f, s), ns, vs, p) [1] eeval(Error(e11, e12), ns, vs, p) -> eeval[False][Ite](False, Error(e11, e12), ns, vs, p) [1] eeval(F, ns, vs, p) -> F [1] eeval(T, ns, vs, p) -> T [1] eeval(ITE(i, t, e), ns, vs, p) -> eeval[Ite](checkConstrExp(eeval(i, ns, vs, p), T), ITE(i, t, e), ns, vs, p) [1] eeval(Bsf(op, t1, t2), ns, vs, p) -> eeval[Let](Bsf(op, t1, t2), ns, vs, p, eeval(t1, ns, vs, p)) [1] eeval(Var(int), ns, vs, p) -> lookvar(int, ns, vs) [1] run(Cons(Fun(f0, e), xs), input) -> run[Let][Let](Cons(Fun(f0, e), xs), input, f0, lookbody(f0, Cons(Fun(f0, e), xs))) [1] eqExp(Error(e11, e12), Error(e21, e22)) -> and(eqExp(e11, e21), eqExp(e12, e22)) [1] eqExp(Error(e11, e12), F) -> False [1] eqExp(Error(e11, e12), T) -> False [1] eqExp(Error(e11, e12), Fun(fn2, fe2)) -> False [1] eqExp(Error(e11, e12), Eq(eq21, eq22)) -> False [1] eqExp(Error(e11, e12), ITE(i2, t2, e2)) -> False [1] eqExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False [1] eqExp(Error(e11, e12), Var(v2)) -> False [1] eqExp(F, Error(e21, e22)) -> False [1] eqExp(F, F) -> True [1] eqExp(F, T) -> False [1] eqExp(F, Fun(fn2, fe2)) -> False [1] eqExp(F, Eq(eq21, eq22)) -> False [1] eqExp(F, ITE(i2, t2, e2)) -> False [1] eqExp(F, Bsf(op2, b21, b22)) -> False [1] eqExp(F, Var(v2)) -> False [1] eqExp(T, Error(e21, e22)) -> False [1] eqExp(T, F) -> False [1] eqExp(T, T) -> True [1] eqExp(T, Fun(fn2, fe2)) -> False [1] eqExp(T, Eq(eq21, eq22)) -> False [1] eqExp(T, ITE(i2, t2, e2)) -> False [1] eqExp(T, Bsf(op2, b21, b22)) -> False [1] eqExp(T, Var(v2)) -> False [1] eqExp(Fun(fn1, fe1), Error(e21, e22)) -> False [1] eqExp(Fun(fn1, fe1), F) -> False [1] eqExp(Fun(fn1, fe1), T) -> False [1] eqExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> and(!EQ(fn1, fn2), eqExp(fe1, fe2)) [1] eqExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False [1] eqExp(Fun(fn1, fe1), ITE(i2, t2, e2)) -> False [1] eqExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False [1] eqExp(Fun(fn1, fe1), Var(v2)) -> False [1] eqExp(Eq(eq11, eq12), Error(e21, e22)) -> False [1] eqExp(Eq(eq11, eq12), F) -> False [1] eqExp(Eq(eq11, eq12), T) -> False [1] eqExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False [1] eqExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> and(eqExp(eq11, eq21), eqExp(eq12, eq22)) [1] eqExp(Eq(eq11, eq12), ITE(i2, t2, e2)) -> False [1] eqExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False [1] eqExp(Eq(eq11, eq12), Var(v2)) -> False [1] eqExp(ITE(i1, t1, e1), Error(e21, e22)) -> False [1] eqExp(ITE(i1, t1, e1), F) -> False [1] eqExp(ITE(i1, t1, e1), T) -> False [1] eqExp(ITE(i1, t1, e1), Fun(fn2, fe2)) -> False [1] eqExp(ITE(i1, t1, e1), Eq(eq21, eq22)) -> False [1] eqExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> and(eqExp(i1, i2), and(eqExp(t1, t2), eqExp(e1, e2))) [1] eqExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> False [1] eqExp(ITE(i1, t1, e1), Var(v2)) -> False [1] eqExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False [1] eqExp(Bsf(op1, b11, b12), F) -> False [1] eqExp(Bsf(op1, b11, b12), T) -> False [1] eqExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False [1] eqExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False [1] eqExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> False [1] eqExp(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> and(True, and(eqExp(b11, b21), eqExp(b12, b22))) [1] eqExp(Bsf(op1, b11, b12), Var(v2)) -> False [1] eqExp(Var(v1), Error(e21, e22)) -> False [1] eqExp(Var(v1), F) -> False [1] eqExp(Var(v1), T) -> False [1] eqExp(Var(v1), Fun(fn2, fe2)) -> False [1] eqExp(Var(v1), Eq(eq21, eq22)) -> False [1] eqExp(Var(v1), ITE(i2, t2, e2)) -> False [1] eqExp(Var(v1), Bsf(op2, b21, b22)) -> False [1] eqExp(Var(v1), Var(v2)) -> !EQ(v1, v2) [1] checkConstrExp(Error(e11, e12), Error(e21, e22)) -> True [1] checkConstrExp(Error(e11, e12), F) -> False [1] checkConstrExp(Error(e11, e12), T) -> False [1] checkConstrExp(Error(e11, e12), Fun(fn2, fe2)) -> False [1] checkConstrExp(Error(e11, e12), Eq(eq21, eq22)) -> False [1] checkConstrExp(Error(e11, e12), ITE(i2, t2, e2)) -> False [1] checkConstrExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False [1] checkConstrExp(Error(e11, e12), Var(v2)) -> False [1] checkConstrExp(F, Error(e21, e22)) -> False [1] checkConstrExp(F, F) -> True [1] checkConstrExp(F, T) -> False [1] checkConstrExp(F, Fun(fn2, fe2)) -> False [1] checkConstrExp(F, Eq(eq21, eq22)) -> False [1] checkConstrExp(F, ITE(i2, t2, e2)) -> False [1] checkConstrExp(F, Bsf(op2, b21, b22)) -> False [1] checkConstrExp(F, Var(v2)) -> False [1] checkConstrExp(T, Error(e21, e22)) -> False [1] checkConstrExp(T, F) -> False [1] checkConstrExp(T, T) -> True [1] checkConstrExp(T, Fun(fn2, fe2)) -> False [1] checkConstrExp(T, Eq(eq21, eq22)) -> False [1] checkConstrExp(T, ITE(i2, t2, e2)) -> False [1] checkConstrExp(T, Bsf(op2, b21, b22)) -> False [1] checkConstrExp(T, Var(v2)) -> False [1] checkConstrExp(Fun(fn1, fe1), Error(e21, e22)) -> False [1] checkConstrExp(Fun(fn1, fe1), F) -> False [1] checkConstrExp(Fun(fn1, fe1), T) -> False [1] checkConstrExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> True [1] checkConstrExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False [1] checkConstrExp(Fun(fn1, fe1), ITE(i2, t2, e2)) -> False [1] checkConstrExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False [1] checkConstrExp(Fun(fn1, fe1), Var(v2)) -> False [1] checkConstrExp(Eq(eq11, eq12), Error(e21, e22)) -> False [1] checkConstrExp(Eq(eq11, eq12), F) -> False [1] checkConstrExp(Eq(eq11, eq12), T) -> False [1] checkConstrExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False [1] checkConstrExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> True [1] checkConstrExp(Eq(eq11, eq12), ITE(i2, t2, e2)) -> False [1] checkConstrExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False [1] checkConstrExp(Eq(eq11, eq12), Var(v2)) -> False [1] checkConstrExp(ITE(i1, t1, e1), Error(e21, e22)) -> False [1] checkConstrExp(ITE(i1, t1, e1), F) -> False [1] checkConstrExp(ITE(i1, t1, e1), T) -> False [1] checkConstrExp(ITE(i1, t1, e1), Fun(fn2, fe2)) -> False [1] checkConstrExp(ITE(i1, t1, e1), Eq(eq21, eq22)) -> False [1] checkConstrExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> True [1] checkConstrExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> False [1] checkConstrExp(ITE(i1, t1, e1), Var(v2)) -> False [1] checkConstrExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False [1] checkConstrExp(Bsf(op1, b11, b12), F) -> False [1] checkConstrExp(Bsf(op1, b11, b12), T) -> False [1] checkConstrExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False [1] checkConstrExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False [1] checkConstrExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> False [1] checkConstrExp(Bsf(op1, b11, b12), Bsf(op2, b21, b22)) -> True [1] checkConstrExp(Bsf(op1, b11, b12), Var(v2)) -> False [1] checkConstrExp(Var(v1), Error(e21, e22)) -> False [1] checkConstrExp(Var(v1), F) -> False [1] checkConstrExp(Var(v1), T) -> False [1] checkConstrExp(Var(v1), Fun(fn2, fe2)) -> False [1] checkConstrExp(Var(v1), Eq(eq21, eq22)) -> False [1] checkConstrExp(Var(v1), ITE(i2, t2, e2)) -> False [1] checkConstrExp(Var(v1), Bsf(op2, b21, b22)) -> False [1] checkConstrExp(Var(v1), Var(v2)) -> True [1] lookname(f, Cons(Fun(n, e), xs)) -> lookname[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) [1] lookbody(f, Cons(Fun(n, e), xs)) -> lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) [1] getVar(Var(int)) -> int [1] getIfTrue(ITE(i, t, e)) -> t [1] getIfGuard(ITE(i, t, e)) -> i [1] getIfFalse(ITE(i, t, e)) -> e [1] getFuncName(Fun(n, e)) -> n [1] getFuncExp(Fun(n, e)) -> e [1] getEqSecond(Eq(f, s)) -> s [1] getEqFirst(Eq(f, s)) -> f [1] getConst(Cst(int)) -> int [1] getBsfSecondTerm(Bsf(op, t1, t2)) -> t2 [1] getBsfOp(Bsf(op, t1, t2)) -> op [1] getBsfFirstTerm(Bsf(op, t1, t2)) -> t1 [1] apply(op, v1, v2) -> apply[Ite](eqExp(v1, v2), op, v1, v2) [1] lookvar(x', Cons(x, xs), vs) -> lookvar[Ite](!EQ(x', x), x', Cons(x, xs), vs) [1] eqOps(o1, o2) -> True [1] !EQ(S(x), S(y)) -> !EQ(x, y) [0] !EQ(0, S(y)) -> False [0] !EQ(S(x), 0) -> False [0] !EQ(0, 0) -> True [0] and(False, False) -> False [0] and(True, False) -> False [0] and(False, True) -> False [0] and(True, True) -> True [0] eeval[False][Ite](True, Eq(f, s), ns, vs, p) -> eeval[True][Ite](eqExp(eeval(f, ns, vs, p), eeval(s, ns, vs, p)), Eq(f, s), ns, vs, p) [0] lookvar[Ite](False, x', Cons(x'', xs'), Cons(x, xs)) -> lookvar(x', xs', xs) [0] lookname[Ite](True, f, Cons(Fun(n, e), xs)) -> n [0] lookbody[Ite](True, f, Cons(Fun(n, e), xs)) -> e [0] eeval[False][Ite](False, Fun(n, e), ns, vs, p) -> eeval[False][Let](Fun(n, e), ns, vs, p, lookbody(n, p)) [0] eeval[Ite](False, ITE(i, t, e), ns, vs, p) -> eeval(e, ns, vs, p) [0] eeval[Ite](True, ITE(i, t, e), ns, vs, p) -> eeval(t, ns, vs, p) [0] eeval[False][Let](Fun(n, e), ns, vs, p, ef) -> eeval[False][Let][Let](Fun(n, e), ns, vs, p, ef, lookname(n, p)) [0] eeval[False][Let][Let](Fun(n, e), ns, vs, p, ef, nf) -> eeval[Let][Let][Let](Fun(n, e), ns, vs, p, ef, nf, eeval(e, ns, vs, p)) [0] eeval[Let](Bsf(op, t1, t2), ns, vs, p, v1) -> eeval[Let][Let](Bsf(op, t1, t2), ns, vs, p, v1, eeval(t2, ns, vs, p)) [0] eeval[Let][Let](Bsf(op, t1, t2), ns, vs, p, v1, v2) -> apply(op, v1, v2) [0] lookvar[Ite](True, x', ns, Cons(x, xs)) -> x [0] lookname[Ite](False, f, Cons(x, xs)) -> lookname(f, xs) [0] lookbody[Ite](False, f, Cons(x, xs)) -> lookbody(f, xs) [0] eeval[True][Ite](False, e, ns, vs, p) -> F [0] eeval[True][Ite](True, e, ns, vs, p) -> T [0] apply[Ite](False, op, v1, v2) -> F [0] apply[Ite](True, op, v1, v2) -> T [0] run[Let][Let](p, input, f0, ef) -> run[Let](p, input, f0, ef, lookname(f0, p)) [0] run[Let](p, input, f0, ef, nf) -> eeval(ef, Cons(nf, Nil), Cons(input, Nil), p) [0] eeval[Let][Let][Let](e, ns, vs, p, ef, nf, v) -> eeval(ef, Cons(nf, Nil), Cons(v, Nil), p) [0] !EQ(v0, v1) -> null_!EQ [0] and(v0, v1) -> null_and [0] eeval[False][Ite](v0, v1, v2, v3, v4) -> null_eeval[False][Ite] [0] lookvar[Ite](v0, v1, v2, v3) -> null_lookvar[Ite] [0] lookname[Ite](v0, v1, v2) -> null_lookname[Ite] [0] lookbody[Ite](v0, v1, v2) -> null_lookbody[Ite] [0] eeval[Ite](v0, v1, v2, v3, v4) -> null_eeval[Ite] [0] eeval[False][Let](v0, v1, v2, v3, v4) -> null_eeval[False][Let] [0] eeval[False][Let][Let](v0, v1, v2, v3, v4, v5) -> null_eeval[False][Let][Let] [0] eeval[Let](v0, v1, v2, v3, v4) -> null_eeval[Let] [0] eeval[Let][Let](v0, v1, v2, v3, v4, v5) -> null_eeval[Let][Let] [0] eeval[True][Ite](v0, v1, v2, v3, v4) -> null_eeval[True][Ite] [0] apply[Ite](v0, v1, v2, v3) -> null_apply[Ite] [0] run[Let][Let](v0, v1, v2, v3) -> null_run[Let][Let] [0] run[Let](v0, v1, v2, v3, v4) -> null_run[Let] [0] eeval[Let][Let][Let](v0, v1, v2, v3, v4, v5, v6) -> null_eeval[Let][Let][Let] [0] eqExp(v0, v1) -> null_eqExp [0] eeval(v0, v1, v2, v3) -> null_eeval [0] lookbody(v0, v1) -> null_lookbody [0] checkConstrExp(v0, v1) -> null_checkConstrExp [0] lookname(v0, v1) -> null_lookname [0] lookvar(v0, v1, v2) -> null_lookvar [0] The TRS has the following type information: eeval :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar Fun :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar eeval[False][Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar lookbody :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar Eq :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar eeval[True][Ite] :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar eqExp :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp Error :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar eeval[False][Ite] :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar False :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp F :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar T :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar ITE :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar eeval[Ite] :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar checkConstrExp :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp Bsf :: getBsfOp -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar eeval[Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar Var :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar lookvar :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar run :: Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar Cons :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Cons:Nil -> Cons:Nil run[Let][Let] :: Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar and :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp -> False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp -> False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp True :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp !EQ :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp lookname :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar lookname[Ite] :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar lookbody[Ite] :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar getVar :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar getIfTrue :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar getIfGuard :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar getIfFalse :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar getFuncName :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar getFuncExp :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar getEqSecond :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar getEqFirst :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar getConst :: Cst -> getConst Cst :: getConst -> Cst getBsfSecondTerm :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar getBsfOp :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> getBsfOp getBsfFirstTerm :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar apply :: getBsfOp -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar apply[Ite] :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp -> getBsfOp -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar lookvar[Ite] :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar eqOps :: a -> b -> False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp S :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar 0 :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar eeval[False][Let][Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar eeval[Let][Let][Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar eeval[Let][Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar run[Let] :: Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar Nil :: Cons:Nil null_!EQ :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp null_and :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp null_eeval[False][Ite] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar null_lookvar[Ite] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar null_lookname[Ite] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar null_lookbody[Ite] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar null_eeval[Ite] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar null_eeval[False][Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar null_eeval[False][Let][Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar null_eeval[Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar null_eeval[Let][Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar null_eeval[True][Ite] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar null_apply[Ite] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar null_run[Let][Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar null_run[Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar null_eeval[Let][Let][Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar null_eqExp :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp null_eeval :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar null_lookbody :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar null_checkConstrExp :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp null_lookname :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar null_lookvar :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_lookbody:null_lookname:null_lookvar const :: getBsfOp const1 :: getConst const2 :: Cst const3 :: a const4 :: b Rewrite Strategy: INNERMOST ---------------------------------------- (13) CompletionProof (UPPER BOUND(ID)) The TRS is a completely defined constructor system, as every type has a constant constructor and the following rules were added: !EQ(v0, v1) -> null_!EQ [0] and(v0, v1) -> null_and [0] eeval[False][Ite](v0, v1, v2, v3, v4) -> null_eeval[False][Ite] [0] lookvar[Ite](v0, v1, v2, v3) -> null_lookvar[Ite] [0] lookname[Ite](v0, v1, v2) -> null_lookname[Ite] [0] lookbody[Ite](v0, v1, v2) -> null_lookbody[Ite] [0] eeval[Ite](v0, v1, v2, v3, v4) -> null_eeval[Ite] [0] eeval[False][Let](v0, v1, v2, v3, v4) -> null_eeval[False][Let] [0] eeval[False][Let][Let](v0, v1, v2, v3, v4, v5) -> null_eeval[False][Let][Let] [0] eeval[Let](v0, v1, v2, v3, v4) -> null_eeval[Let] [0] eeval[Let][Let](v0, v1, v2, v3, v4, v5) -> null_eeval[Let][Let] [0] eeval[True][Ite](v0, v1, v2, v3, v4) -> null_eeval[True][Ite] [0] apply[Ite](v0, v1, v2, v3) -> null_apply[Ite] [0] run[Let][Let](v0, v1, v2, v3) -> null_run[Let][Let] [0] run[Let](v0, v1, v2, v3, v4) -> null_run[Let] [0] eeval[Let][Let][Let](v0, v1, v2, v3, v4, v5, v6) -> null_eeval[Let][Let][Let] [0] eeval(v0, v1, v2, v3) -> null_eeval [0] run(v0, v1) -> null_run [0] eqExp(v0, v1) -> null_eqExp [0] checkConstrExp(v0, v1) -> null_checkConstrExp [0] lookname(v0, v1) -> null_lookname [0] lookbody(v0, v1) -> null_lookbody [0] getVar(v0) -> null_getVar [0] getIfTrue(v0) -> null_getIfTrue [0] getIfGuard(v0) -> null_getIfGuard [0] getIfFalse(v0) -> null_getIfFalse [0] getFuncName(v0) -> null_getFuncName [0] getFuncExp(v0) -> null_getFuncExp [0] getEqSecond(v0) -> null_getEqSecond [0] getEqFirst(v0) -> null_getEqFirst [0] getConst(v0) -> null_getConst [0] getBsfSecondTerm(v0) -> null_getBsfSecondTerm [0] getBsfOp(v0) -> null_getBsfOp [0] getBsfFirstTerm(v0) -> null_getBsfFirstTerm [0] lookvar(v0, v1, v2) -> null_lookvar [0] And the following fresh constants: null_!EQ, null_and, null_eeval[False][Ite], null_lookvar[Ite], null_lookname[Ite], null_lookbody[Ite], null_eeval[Ite], null_eeval[False][Let], null_eeval[False][Let][Let], null_eeval[Let], null_eeval[Let][Let], null_eeval[True][Ite], null_apply[Ite], null_run[Let][Let], null_run[Let], null_eeval[Let][Let][Let], null_eeval, null_run, null_eqExp, null_checkConstrExp, null_lookname, null_lookbody, null_getVar, null_getIfTrue, null_getIfGuard, null_getIfFalse, null_getFuncName, null_getFuncExp, null_getEqSecond, null_getEqFirst, null_getConst, null_getBsfSecondTerm, null_getBsfOp, null_getBsfFirstTerm, null_lookvar, const, const1, const2 ---------------------------------------- (14) Obligation: Runtime Complexity Weighted TRS where all functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: eeval(Fun(n, e), ns, vs, p) -> eeval[False][Let](Fun(n, e), ns, vs, p, lookbody(n, p)) [1] eeval(Eq(f, s), ns, vs, p) -> eeval[True][Ite](eqExp(eeval(f, ns, vs, p), eeval(s, ns, vs, p)), Eq(f, s), ns, vs, p) [1] eeval(Error(e11, e12), ns, vs, p) -> eeval[False][Ite](False, Error(e11, e12), ns, vs, p) [1] eeval(F, ns, vs, p) -> F [1] eeval(T, ns, vs, p) -> T [1] eeval(ITE(i, t, e), ns, vs, p) -> eeval[Ite](checkConstrExp(eeval(i, ns, vs, p), T), ITE(i, t, e), ns, vs, p) [1] eeval(Bsf(op, t1, t2), ns, vs, p) -> eeval[Let](Bsf(op, t1, t2), ns, vs, p, eeval(t1, ns, vs, p)) [1] eeval(Var(int), ns, vs, p) -> lookvar(int, ns, vs) [1] run(Cons(Fun(f0, e), xs), input) -> run[Let][Let](Cons(Fun(f0, e), xs), input, f0, lookbody(f0, Cons(Fun(f0, e), xs))) [1] eqExp(Error(e11, e12), Error(e21, e22)) -> and(eqExp(e11, e21), eqExp(e12, e22)) [1] eqExp(Error(e11, e12), F) -> False [1] eqExp(Error(e11, e12), T) -> False [1] eqExp(Error(e11, e12), Fun(fn2, fe2)) -> False [1] eqExp(Error(e11, e12), Eq(eq21, eq22)) -> False [1] eqExp(Error(e11, e12), ITE(i2, t2, e2)) -> False [1] eqExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False [1] eqExp(Error(e11, e12), Var(v2)) -> False [1] eqExp(F, Error(e21, e22)) -> False [1] eqExp(F, F) -> True [1] eqExp(F, T) -> False [1] eqExp(F, Fun(fn2, fe2)) -> False [1] eqExp(F, Eq(eq21, eq22)) -> False [1] eqExp(F, ITE(i2, t2, e2)) -> False [1] eqExp(F, Bsf(op2, b21, b22)) -> False [1] eqExp(F, Var(v2)) -> False [1] eqExp(T, Error(e21, e22)) -> False [1] eqExp(T, F) -> False [1] eqExp(T, T) -> True [1] eqExp(T, Fun(fn2, fe2)) -> False [1] eqExp(T, Eq(eq21, eq22)) -> False [1] eqExp(T, ITE(i2, t2, e2)) -> False [1] eqExp(T, Bsf(op2, b21, b22)) -> False [1] eqExp(T, Var(v2)) -> False [1] eqExp(Fun(fn1, fe1), Error(e21, e22)) -> False [1] eqExp(Fun(fn1, fe1), F) -> False [1] eqExp(Fun(fn1, fe1), T) -> False [1] eqExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> and(!EQ(fn1, fn2), eqExp(fe1, fe2)) [1] eqExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False [1] eqExp(Fun(fn1, fe1), ITE(i2, t2, e2)) -> False [1] eqExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False [1] eqExp(Fun(fn1, fe1), Var(v2)) -> False [1] eqExp(Eq(eq11, eq12), Error(e21, e22)) -> False [1] eqExp(Eq(eq11, eq12), F) -> False [1] eqExp(Eq(eq11, eq12), T) -> False [1] eqExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False [1] eqExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> and(eqExp(eq11, eq21), eqExp(eq12, eq22)) [1] eqExp(Eq(eq11, eq12), ITE(i2, t2, e2)) -> False [1] eqExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False [1] eqExp(Eq(eq11, eq12), Var(v2)) -> False [1] eqExp(ITE(i1, t1, e1), Error(e21, e22)) -> False [1] eqExp(ITE(i1, t1, e1), F) -> False [1] eqExp(ITE(i1, t1, e1), T) -> False [1] eqExp(ITE(i1, t1, e1), Fun(fn2, fe2)) -> False [1] eqExp(ITE(i1, t1, e1), Eq(eq21, eq22)) -> False [1] eqExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> and(eqExp(i1, i2), and(eqExp(t1, t2), eqExp(e1, e2))) [1] eqExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> False [1] eqExp(ITE(i1, t1, e1), Var(v2)) -> False [1] eqExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False [1] eqExp(Bsf(op1, b11, b12), F) -> False [1] eqExp(Bsf(op1, b11, b12), T) -> False [1] eqExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False [1] eqExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False [1] eqExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> False [1] eqExp(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> and(True, and(eqExp(b11, b21), eqExp(b12, b22))) [1] eqExp(Bsf(op1, b11, b12), Var(v2)) -> False [1] eqExp(Var(v1), Error(e21, e22)) -> False [1] eqExp(Var(v1), F) -> False [1] eqExp(Var(v1), T) -> False [1] eqExp(Var(v1), Fun(fn2, fe2)) -> False [1] eqExp(Var(v1), Eq(eq21, eq22)) -> False [1] eqExp(Var(v1), ITE(i2, t2, e2)) -> False [1] eqExp(Var(v1), Bsf(op2, b21, b22)) -> False [1] eqExp(Var(v1), Var(v2)) -> !EQ(v1, v2) [1] checkConstrExp(Error(e11, e12), Error(e21, e22)) -> True [1] checkConstrExp(Error(e11, e12), F) -> False [1] checkConstrExp(Error(e11, e12), T) -> False [1] checkConstrExp(Error(e11, e12), Fun(fn2, fe2)) -> False [1] checkConstrExp(Error(e11, e12), Eq(eq21, eq22)) -> False [1] checkConstrExp(Error(e11, e12), ITE(i2, t2, e2)) -> False [1] checkConstrExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False [1] checkConstrExp(Error(e11, e12), Var(v2)) -> False [1] checkConstrExp(F, Error(e21, e22)) -> False [1] checkConstrExp(F, F) -> True [1] checkConstrExp(F, T) -> False [1] checkConstrExp(F, Fun(fn2, fe2)) -> False [1] checkConstrExp(F, Eq(eq21, eq22)) -> False [1] checkConstrExp(F, ITE(i2, t2, e2)) -> False [1] checkConstrExp(F, Bsf(op2, b21, b22)) -> False [1] checkConstrExp(F, Var(v2)) -> False [1] checkConstrExp(T, Error(e21, e22)) -> False [1] checkConstrExp(T, F) -> False [1] checkConstrExp(T, T) -> True [1] checkConstrExp(T, Fun(fn2, fe2)) -> False [1] checkConstrExp(T, Eq(eq21, eq22)) -> False [1] checkConstrExp(T, ITE(i2, t2, e2)) -> False [1] checkConstrExp(T, Bsf(op2, b21, b22)) -> False [1] checkConstrExp(T, Var(v2)) -> False [1] checkConstrExp(Fun(fn1, fe1), Error(e21, e22)) -> False [1] checkConstrExp(Fun(fn1, fe1), F) -> False [1] checkConstrExp(Fun(fn1, fe1), T) -> False [1] checkConstrExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> True [1] checkConstrExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False [1] checkConstrExp(Fun(fn1, fe1), ITE(i2, t2, e2)) -> False [1] checkConstrExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False [1] checkConstrExp(Fun(fn1, fe1), Var(v2)) -> False [1] checkConstrExp(Eq(eq11, eq12), Error(e21, e22)) -> False [1] checkConstrExp(Eq(eq11, eq12), F) -> False [1] checkConstrExp(Eq(eq11, eq12), T) -> False [1] checkConstrExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False [1] checkConstrExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> True [1] checkConstrExp(Eq(eq11, eq12), ITE(i2, t2, e2)) -> False [1] checkConstrExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False [1] checkConstrExp(Eq(eq11, eq12), Var(v2)) -> False [1] checkConstrExp(ITE(i1, t1, e1), Error(e21, e22)) -> False [1] checkConstrExp(ITE(i1, t1, e1), F) -> False [1] checkConstrExp(ITE(i1, t1, e1), T) -> False [1] checkConstrExp(ITE(i1, t1, e1), Fun(fn2, fe2)) -> False [1] checkConstrExp(ITE(i1, t1, e1), Eq(eq21, eq22)) -> False [1] checkConstrExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> True [1] checkConstrExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> False [1] checkConstrExp(ITE(i1, t1, e1), Var(v2)) -> False [1] checkConstrExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False [1] checkConstrExp(Bsf(op1, b11, b12), F) -> False [1] checkConstrExp(Bsf(op1, b11, b12), T) -> False [1] checkConstrExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False [1] checkConstrExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False [1] checkConstrExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> False [1] checkConstrExp(Bsf(op1, b11, b12), Bsf(op2, b21, b22)) -> True [1] checkConstrExp(Bsf(op1, b11, b12), Var(v2)) -> False [1] checkConstrExp(Var(v1), Error(e21, e22)) -> False [1] checkConstrExp(Var(v1), F) -> False [1] checkConstrExp(Var(v1), T) -> False [1] checkConstrExp(Var(v1), Fun(fn2, fe2)) -> False [1] checkConstrExp(Var(v1), Eq(eq21, eq22)) -> False [1] checkConstrExp(Var(v1), ITE(i2, t2, e2)) -> False [1] checkConstrExp(Var(v1), Bsf(op2, b21, b22)) -> False [1] checkConstrExp(Var(v1), Var(v2)) -> True [1] lookname(f, Cons(Fun(n, e), xs)) -> lookname[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) [1] lookbody(f, Cons(Fun(n, e), xs)) -> lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) [1] getVar(Var(int)) -> int [1] getIfTrue(ITE(i, t, e)) -> t [1] getIfGuard(ITE(i, t, e)) -> i [1] getIfFalse(ITE(i, t, e)) -> e [1] getFuncName(Fun(n, e)) -> n [1] getFuncExp(Fun(n, e)) -> e [1] getEqSecond(Eq(f, s)) -> s [1] getEqFirst(Eq(f, s)) -> f [1] getConst(Cst(int)) -> int [1] getBsfSecondTerm(Bsf(op, t1, t2)) -> t2 [1] getBsfOp(Bsf(op, t1, t2)) -> op [1] getBsfFirstTerm(Bsf(op, t1, t2)) -> t1 [1] apply(op, v1, v2) -> apply[Ite](eqExp(v1, v2), op, v1, v2) [1] lookvar(x', Cons(x, xs), vs) -> lookvar[Ite](!EQ(x', x), x', Cons(x, xs), vs) [1] eqOps(o1, o2) -> True [1] !EQ(S(x), S(y)) -> !EQ(x, y) [0] !EQ(0, S(y)) -> False [0] !EQ(S(x), 0) -> False [0] !EQ(0, 0) -> True [0] and(False, False) -> False [0] and(True, False) -> False [0] and(False, True) -> False [0] and(True, True) -> True [0] eeval[False][Ite](True, Eq(f, s), ns, vs, p) -> eeval[True][Ite](eqExp(eeval(f, ns, vs, p), eeval(s, ns, vs, p)), Eq(f, s), ns, vs, p) [0] lookvar[Ite](False, x', Cons(x'', xs'), Cons(x, xs)) -> lookvar(x', xs', xs) [0] lookname[Ite](True, f, Cons(Fun(n, e), xs)) -> n [0] lookbody[Ite](True, f, Cons(Fun(n, e), xs)) -> e [0] eeval[False][Ite](False, Fun(n, e), ns, vs, p) -> eeval[False][Let](Fun(n, e), ns, vs, p, lookbody(n, p)) [0] eeval[Ite](False, ITE(i, t, e), ns, vs, p) -> eeval(e, ns, vs, p) [0] eeval[Ite](True, ITE(i, t, e), ns, vs, p) -> eeval(t, ns, vs, p) [0] eeval[False][Let](Fun(n, e), ns, vs, p, ef) -> eeval[False][Let][Let](Fun(n, e), ns, vs, p, ef, lookname(n, p)) [0] eeval[False][Let][Let](Fun(n, e), ns, vs, p, ef, nf) -> eeval[Let][Let][Let](Fun(n, e), ns, vs, p, ef, nf, eeval(e, ns, vs, p)) [0] eeval[Let](Bsf(op, t1, t2), ns, vs, p, v1) -> eeval[Let][Let](Bsf(op, t1, t2), ns, vs, p, v1, eeval(t2, ns, vs, p)) [0] eeval[Let][Let](Bsf(op, t1, t2), ns, vs, p, v1, v2) -> apply(op, v1, v2) [0] lookvar[Ite](True, x', ns, Cons(x, xs)) -> x [0] lookname[Ite](False, f, Cons(x, xs)) -> lookname(f, xs) [0] lookbody[Ite](False, f, Cons(x, xs)) -> lookbody(f, xs) [0] eeval[True][Ite](False, e, ns, vs, p) -> F [0] eeval[True][Ite](True, e, ns, vs, p) -> T [0] apply[Ite](False, op, v1, v2) -> F [0] apply[Ite](True, op, v1, v2) -> T [0] run[Let][Let](p, input, f0, ef) -> run[Let](p, input, f0, ef, lookname(f0, p)) [0] run[Let](p, input, f0, ef, nf) -> eeval(ef, Cons(nf, Nil), Cons(input, Nil), p) [0] eeval[Let][Let][Let](e, ns, vs, p, ef, nf, v) -> eeval(ef, Cons(nf, Nil), Cons(v, Nil), p) [0] !EQ(v0, v1) -> null_!EQ [0] and(v0, v1) -> null_and [0] eeval[False][Ite](v0, v1, v2, v3, v4) -> null_eeval[False][Ite] [0] lookvar[Ite](v0, v1, v2, v3) -> null_lookvar[Ite] [0] lookname[Ite](v0, v1, v2) -> null_lookname[Ite] [0] lookbody[Ite](v0, v1, v2) -> null_lookbody[Ite] [0] eeval[Ite](v0, v1, v2, v3, v4) -> null_eeval[Ite] [0] eeval[False][Let](v0, v1, v2, v3, v4) -> null_eeval[False][Let] [0] eeval[False][Let][Let](v0, v1, v2, v3, v4, v5) -> null_eeval[False][Let][Let] [0] eeval[Let](v0, v1, v2, v3, v4) -> null_eeval[Let] [0] eeval[Let][Let](v0, v1, v2, v3, v4, v5) -> null_eeval[Let][Let] [0] eeval[True][Ite](v0, v1, v2, v3, v4) -> null_eeval[True][Ite] [0] apply[Ite](v0, v1, v2, v3) -> null_apply[Ite] [0] run[Let][Let](v0, v1, v2, v3) -> null_run[Let][Let] [0] run[Let](v0, v1, v2, v3, v4) -> null_run[Let] [0] eeval[Let][Let][Let](v0, v1, v2, v3, v4, v5, v6) -> null_eeval[Let][Let][Let] [0] eeval(v0, v1, v2, v3) -> null_eeval [0] run(v0, v1) -> null_run [0] eqExp(v0, v1) -> null_eqExp [0] checkConstrExp(v0, v1) -> null_checkConstrExp [0] lookname(v0, v1) -> null_lookname [0] lookbody(v0, v1) -> null_lookbody [0] getVar(v0) -> null_getVar [0] getIfTrue(v0) -> null_getIfTrue [0] getIfGuard(v0) -> null_getIfGuard [0] getIfFalse(v0) -> null_getIfFalse [0] getFuncName(v0) -> null_getFuncName [0] getFuncExp(v0) -> null_getFuncExp [0] getEqSecond(v0) -> null_getEqSecond [0] getEqFirst(v0) -> null_getEqFirst [0] getConst(v0) -> null_getConst [0] getBsfSecondTerm(v0) -> null_getBsfSecondTerm [0] getBsfOp(v0) -> null_getBsfOp [0] getBsfFirstTerm(v0) -> null_getBsfFirstTerm [0] lookvar(v0, v1, v2) -> null_lookvar [0] The TRS has the following type information: eeval :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar Fun :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar eeval[False][Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar lookbody :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar Eq :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar eeval[True][Ite] :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar eqExp :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp Error :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar eeval[False][Ite] :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar False :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp F :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar T :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar ITE :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar eeval[Ite] :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar checkConstrExp :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp Bsf :: null_getBsfOp -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar eeval[Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar Var :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar lookvar :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar run :: Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar Cons :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Cons:Nil -> Cons:Nil run[Let][Let] :: Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar and :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp -> False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp -> False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp True :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp !EQ :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp lookname :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar lookname[Ite] :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar lookbody[Ite] :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar getVar :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar getIfTrue :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar getIfGuard :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar getIfFalse :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar getFuncName :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar getFuncExp :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar getEqSecond :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar getEqFirst :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar getConst :: Cst -> null_getConst Cst :: null_getConst -> Cst getBsfSecondTerm :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar getBsfOp :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> null_getBsfOp getBsfFirstTerm :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar apply :: null_getBsfOp -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar apply[Ite] :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp -> null_getBsfOp -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar lookvar[Ite] :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar eqOps :: a -> b -> False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp S :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar 0 :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar eeval[False][Let][Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar eeval[Let][Let][Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar eeval[Let][Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar run[Let] :: Cons:Nil -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar -> Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar Nil :: Cons:Nil null_!EQ :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp null_and :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp null_eeval[False][Ite] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_lookvar[Ite] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_lookname[Ite] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_lookbody[Ite] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_eeval[Ite] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_eeval[False][Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_eeval[False][Let][Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_eeval[Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_eeval[Let][Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_eeval[True][Ite] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_apply[Ite] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_run[Let][Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_run[Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_eeval[Let][Let][Let] :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_eeval :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_run :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_eqExp :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp null_checkConstrExp :: False:True:null_!EQ:null_and:null_eqExp:null_checkConstrExp null_lookname :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_lookbody :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_getVar :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_getIfTrue :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_getIfGuard :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_getIfFalse :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_getFuncName :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_getFuncExp :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_getEqSecond :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_getEqFirst :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_getConst :: null_getConst null_getBsfSecondTerm :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_getBsfOp :: null_getBsfOp null_getBsfFirstTerm :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar null_lookvar :: Fun:Eq:Error:F:T:ITE:Bsf:Var:S:0:null_eeval[False][Ite]:null_lookvar[Ite]:null_lookname[Ite]:null_lookbody[Ite]:null_eeval[Ite]:null_eeval[False][Let]:null_eeval[False][Let][Let]:null_eeval[Let]:null_eeval[Let][Let]:null_eeval[True][Ite]:null_apply[Ite]:null_run[Let][Let]:null_run[Let]:null_eeval[Let][Let][Let]:null_eeval:null_run:null_lookname:null_lookbody:null_getVar:null_getIfTrue:null_getIfGuard:null_getIfFalse:null_getFuncName:null_getFuncExp:null_getEqSecond:null_getEqFirst:null_getBsfSecondTerm:null_getBsfFirstTerm:null_lookvar const :: Cst const1 :: a const2 :: b Rewrite Strategy: INNERMOST ---------------------------------------- (15) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: False => 1 F => 1 T => 2 True => 2 0 => 0 Nil => 0 null_!EQ => 0 null_and => 0 null_eeval[False][Ite] => 0 null_lookvar[Ite] => 0 null_lookname[Ite] => 0 null_lookbody[Ite] => 0 null_eeval[Ite] => 0 null_eeval[False][Let] => 0 null_eeval[False][Let][Let] => 0 null_eeval[Let] => 0 null_eeval[Let][Let] => 0 null_eeval[True][Ite] => 0 null_apply[Ite] => 0 null_run[Let][Let] => 0 null_run[Let] => 0 null_eeval[Let][Let][Let] => 0 null_eeval => 0 null_run => 0 null_eqExp => 0 null_checkConstrExp => 0 null_lookname => 0 null_lookbody => 0 null_getVar => 0 null_getIfTrue => 0 null_getIfGuard => 0 null_getIfFalse => 0 null_getFuncName => 0 null_getFuncExp => 0 null_getEqSecond => 0 null_getEqFirst => 0 null_getConst => 0 null_getBsfSecondTerm => 0 null_getBsfOp => 0 null_getBsfFirstTerm => 0 null_lookvar => 0 const => 0 const1 => 0 const2 => 0 ---------------------------------------- (16) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z' = 1 + y, y >= 0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: x >= 0, z = 1 + x, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 !EQ(z, z') -{ 0 }-> !EQ(x, y) :|: z' = 1 + y, x >= 0, y >= 0, z = 1 + x and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 and(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 apply(z, z', z'') -{ 1 }-> apply[Ite](eqExp(v1, v2), op, v1, v2) :|: z'' = v2, z = op, v1 >= 0, op >= 0, z' = v1, v2 >= 0 apply[Ite](z, z', z'', z1) -{ 0 }-> 2 :|: z = 2, z1 = v2, v1 >= 0, z' = op, z'' = v1, op >= 0, v2 >= 0 apply[Ite](z, z', z'', z1) -{ 0 }-> 1 :|: z = 1, z1 = v2, v1 >= 0, z' = op, z'' = v1, op >= 0, v2 >= 0 apply[Ite](z, z', z'', z1) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 checkConstrExp(z, z') -{ 1 }-> 2 :|: e21 >= 0, z = 1 + e11 + e12, e11 >= 0, e22 >= 0, e12 >= 0, z' = 1 + e21 + e22 checkConstrExp(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 checkConstrExp(z, z') -{ 1 }-> 2 :|: z = 2, z' = 2 checkConstrExp(z, z') -{ 1 }-> 2 :|: z = 1 + fn1 + fe1, fn2 >= 0, z' = 1 + fn2 + fe2, fe1 >= 0, fe2 >= 0, fn1 >= 0 checkConstrExp(z, z') -{ 1 }-> 2 :|: z = 1 + eq11 + eq12, eq21 >= 0, z' = 1 + eq21 + eq22, eq22 >= 0, eq11 >= 0, eq12 >= 0 checkConstrExp(z, z') -{ 1 }-> 2 :|: z = 1 + i1 + t1 + e1, i1 >= 0, t1 >= 0, e1 >= 0, z' = 1 + i2 + t2 + e2, i2 >= 0, e2 >= 0, t2 >= 0 checkConstrExp(z, z') -{ 1 }-> 2 :|: b12 >= 0, op2 >= 0, op1 >= 0, b11 >= 0, b21 >= 0, z = 1 + op1 + b11 + b12, b22 >= 0, z' = 1 + op2 + b21 + b22 checkConstrExp(z, z') -{ 1 }-> 2 :|: z' = 1 + v2, z = 1 + v1, v1 >= 0, v2 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1 + e11 + e12, e11 >= 0, e12 >= 0, z' = 1 checkConstrExp(z, z') -{ 1 }-> 1 :|: z' = 2, z = 1 + e11 + e12, e11 >= 0, e12 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1 + e11 + e12, e11 >= 0, fn2 >= 0, e12 >= 0, z' = 1 + fn2 + fe2, fe2 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: eq21 >= 0, z' = 1 + eq21 + eq22, z = 1 + e11 + e12, e11 >= 0, eq22 >= 0, e12 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1 + e11 + e12, e11 >= 0, e12 >= 0, z' = 1 + i2 + t2 + e2, i2 >= 0, e2 >= 0, t2 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1 + e11 + e12, e11 >= 0, op2 >= 0, b21 >= 0, e12 >= 0, b22 >= 0, z' = 1 + op2 + b21 + b22 checkConstrExp(z, z') -{ 1 }-> 1 :|: z' = 1 + v2, z = 1 + e11 + e12, e11 >= 0, e12 >= 0, v2 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: e21 >= 0, z = 1, e22 >= 0, z' = 1 + e21 + e22 checkConstrExp(z, z') -{ 1 }-> 1 :|: z' = 2, z = 1 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1, fn2 >= 0, z' = 1 + fn2 + fe2, fe2 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: eq21 >= 0, z = 1, z' = 1 + eq21 + eq22, eq22 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1, z' = 1 + i2 + t2 + e2, i2 >= 0, e2 >= 0, t2 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1, op2 >= 0, b21 >= 0, b22 >= 0, z' = 1 + op2 + b21 + b22 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1, z' = 1 + v2, v2 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 2, e21 >= 0, e22 >= 0, z' = 1 + e21 + e22 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 2, z' = 1 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 2, fn2 >= 0, z' = 1 + fn2 + fe2, fe2 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 2, eq21 >= 0, z' = 1 + eq21 + eq22, eq22 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 2, z' = 1 + i2 + t2 + e2, i2 >= 0, e2 >= 0, t2 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 2, op2 >= 0, b21 >= 0, b22 >= 0, z' = 1 + op2 + b21 + b22 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 2, z' = 1 + v2, v2 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: e21 >= 0, z = 1 + fn1 + fe1, e22 >= 0, fe1 >= 0, z' = 1 + e21 + e22, fn1 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1 + fn1 + fe1, z' = 1, fe1 >= 0, fn1 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z' = 2, z = 1 + fn1 + fe1, fe1 >= 0, fn1 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: eq21 >= 0, z' = 1 + eq21 + eq22, z = 1 + fn1 + fe1, eq22 >= 0, fe1 >= 0, fn1 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1 + fn1 + fe1, z' = 1 + i2 + t2 + e2, i2 >= 0, e2 >= 0, fe1 >= 0, t2 >= 0, fn1 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1 + fn1 + fe1, op2 >= 0, b21 >= 0, b22 >= 0, z' = 1 + op2 + b21 + b22, fe1 >= 0, fn1 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z' = 1 + v2, z = 1 + fn1 + fe1, fe1 >= 0, v2 >= 0, fn1 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1 + eq11 + eq12, e21 >= 0, e22 >= 0, eq11 >= 0, eq12 >= 0, z' = 1 + e21 + e22 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1 + eq11 + eq12, eq11 >= 0, eq12 >= 0, z' = 1 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1 + eq11 + eq12, z' = 2, eq11 >= 0, eq12 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1 + eq11 + eq12, fn2 >= 0, eq11 >= 0, eq12 >= 0, z' = 1 + fn2 + fe2, fe2 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1 + eq11 + eq12, eq11 >= 0, eq12 >= 0, z' = 1 + i2 + t2 + e2, i2 >= 0, e2 >= 0, t2 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1 + eq11 + eq12, op2 >= 0, b21 >= 0, eq11 >= 0, eq12 >= 0, b22 >= 0, z' = 1 + op2 + b21 + b22 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1 + eq11 + eq12, z' = 1 + v2, eq11 >= 0, eq12 >= 0, v2 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1 + i1 + t1 + e1, i1 >= 0, e21 >= 0, e22 >= 0, t1 >= 0, e1 >= 0, z' = 1 + e21 + e22 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1 + i1 + t1 + e1, i1 >= 0, t1 >= 0, z' = 1, e1 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1 + i1 + t1 + e1, i1 >= 0, z' = 2, t1 >= 0, e1 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1 + i1 + t1 + e1, i1 >= 0, fn2 >= 0, t1 >= 0, e1 >= 0, z' = 1 + fn2 + fe2, fe2 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1 + i1 + t1 + e1, i1 >= 0, eq21 >= 0, z' = 1 + eq21 + eq22, eq22 >= 0, t1 >= 0, e1 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1 + i1 + t1 + e1, i1 >= 0, op2 >= 0, b21 >= 0, t1 >= 0, e1 >= 0, b22 >= 0, z' = 1 + op2 + b21 + b22 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1 + i1 + t1 + e1, i1 >= 0, z' = 1 + v2, t1 >= 0, e1 >= 0, v2 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: b12 >= 0, e21 >= 0, e22 >= 0, op1 >= 0, b11 >= 0, z = 1 + op1 + b11 + b12, z' = 1 + e21 + e22 checkConstrExp(z, z') -{ 1 }-> 1 :|: b12 >= 0, op1 >= 0, b11 >= 0, z = 1 + op1 + b11 + b12, z' = 1 checkConstrExp(z, z') -{ 1 }-> 1 :|: b12 >= 0, z' = 2, op1 >= 0, b11 >= 0, z = 1 + op1 + b11 + b12 checkConstrExp(z, z') -{ 1 }-> 1 :|: b12 >= 0, op1 >= 0, b11 >= 0, fn2 >= 0, z = 1 + op1 + b11 + b12, z' = 1 + fn2 + fe2, fe2 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: b12 >= 0, eq21 >= 0, z' = 1 + eq21 + eq22, eq22 >= 0, op1 >= 0, b11 >= 0, z = 1 + op1 + b11 + b12 checkConstrExp(z, z') -{ 1 }-> 1 :|: b12 >= 0, op1 >= 0, b11 >= 0, z = 1 + op1 + b11 + b12, z' = 1 + i2 + t2 + e2, i2 >= 0, e2 >= 0, t2 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: b12 >= 0, z' = 1 + v2, op1 >= 0, b11 >= 0, z = 1 + op1 + b11 + b12, v2 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: e21 >= 0, z = 1 + v1, e22 >= 0, v1 >= 0, z' = 1 + e21 + e22 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1 + v1, v1 >= 0, z' = 1 checkConstrExp(z, z') -{ 1 }-> 1 :|: z' = 2, z = 1 + v1, v1 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1 + v1, fn2 >= 0, v1 >= 0, z' = 1 + fn2 + fe2, fe2 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: eq21 >= 0, z' = 1 + eq21 + eq22, z = 1 + v1, eq22 >= 0, v1 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1 + v1, v1 >= 0, z' = 1 + i2 + t2 + e2, i2 >= 0, e2 >= 0, t2 >= 0 checkConstrExp(z, z') -{ 1 }-> 1 :|: z = 1 + v1, op2 >= 0, b21 >= 0, v1 >= 0, b22 >= 0, z' = 1 + op2 + b21 + b22 checkConstrExp(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 eeval(z, z', z'', z1) -{ 1 }-> lookvar(int, ns, vs) :|: ns >= 0, vs >= 0, z'' = vs, z' = ns, p >= 0, int >= 0, z = 1 + int, z1 = p eeval(z, z', z'', z1) -{ 1 }-> eeval[True][Ite](eqExp(eeval(f, ns, vs, p), eeval(s, ns, vs, p)), 1 + f + s, ns, vs, p) :|: f >= 0, z = 1 + f + s, ns >= 0, vs >= 0, z'' = vs, z' = ns, p >= 0, s >= 0, z1 = p eeval(z, z', z'', z1) -{ 1 }-> eeval[Let](1 + op + t1 + t2, ns, vs, p, eeval(t1, ns, vs, p)) :|: ns >= 0, vs >= 0, z = 1 + op + t1 + t2, z'' = vs, z' = ns, p >= 0, t1 >= 0, op >= 0, t2 >= 0, z1 = p eeval(z, z', z'', z1) -{ 1 }-> eeval[Ite](checkConstrExp(eeval(i, ns, vs, p), 2), 1 + i + t + e, ns, vs, p) :|: ns >= 0, vs >= 0, z'' = vs, i >= 0, z' = ns, t >= 0, p >= 0, e >= 0, z = 1 + i + t + e, z1 = p eeval(z, z', z'', z1) -{ 1 }-> eeval[False][Let](1 + n + e, ns, vs, p, lookbody(n, p)) :|: n >= 0, ns >= 0, vs >= 0, z'' = vs, z' = ns, p >= 0, z = 1 + n + e, e >= 0, z1 = p eeval(z, z', z'', z1) -{ 1 }-> eeval[False][Ite](1, 1 + e11 + e12, ns, vs, p) :|: ns >= 0, vs >= 0, z = 1 + e11 + e12, e11 >= 0, z'' = vs, z' = ns, p >= 0, e12 >= 0, z1 = p eeval(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, ns >= 0, vs >= 0, z'' = vs, z' = ns, p >= 0, z1 = p eeval(z, z', z'', z1) -{ 1 }-> 1 :|: ns >= 0, vs >= 0, z = 1, z'' = vs, z' = ns, p >= 0, z1 = p eeval(z, z', z'', z1) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 eeval[False][Ite](z, z', z'', z1, z2) -{ 0 }-> eeval[True][Ite](eqExp(eeval(f, ns, vs, p), eeval(s, ns, vs, p)), 1 + f + s, ns, vs, p) :|: z = 2, z'' = ns, f >= 0, ns >= 0, vs >= 0, z' = 1 + f + s, p >= 0, s >= 0, z2 = p, z1 = vs eeval[False][Ite](z, z', z'', z1, z2) -{ 0 }-> eeval[False][Let](1 + n + e, ns, vs, p, lookbody(n, p)) :|: z'' = ns, n >= 0, ns >= 0, vs >= 0, z = 1, p >= 0, e >= 0, z2 = p, z' = 1 + n + e, z1 = vs eeval[False][Ite](z, z', z'', z1, z2) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z2 = v4, v2 >= 0, v3 >= 0 eeval[False][Let](z, z', z'', z1, z2) -{ 0 }-> eeval[False][Let][Let](1 + n + e, ns, vs, p, ef, lookname(n, p)) :|: n >= 0, z2 = ef, ns >= 0, vs >= 0, ef >= 0, z'' = vs, z' = ns, p >= 0, z = 1 + n + e, e >= 0, z1 = p eeval[False][Let](z, z', z'', z1, z2) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z2 = v4, v2 >= 0, v3 >= 0 eeval[False][Let][Let](z, z', z'', z1, z2, z3) -{ 0 }-> eeval[Let][Let][Let](1 + n + e, ns, vs, p, ef, nf, eeval(e, ns, vs, p)) :|: n >= 0, z2 = ef, vs >= 0, z'' = vs, e >= 0, ns >= 0, nf >= 0, ef >= 0, z3 = nf, z' = ns, p >= 0, z = 1 + n + e, z1 = p eeval[False][Let][Let](z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z1 = v3, z3 = v5, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, v5 >= 0, z = v0, z' = v1, z2 = v4, v2 >= 0, v3 >= 0 eeval[Ite](z, z', z'', z1, z2) -{ 0 }-> eeval(e, ns, vs, p) :|: z'' = ns, ns >= 0, vs >= 0, z = 1, i >= 0, t >= 0, p >= 0, e >= 0, z' = 1 + i + t + e, z2 = p, z1 = vs eeval[Ite](z, z', z'', z1, z2) -{ 0 }-> eeval(t, ns, vs, p) :|: z = 2, z'' = ns, ns >= 0, vs >= 0, i >= 0, t >= 0, p >= 0, e >= 0, z' = 1 + i + t + e, z2 = p, z1 = vs eeval[Ite](z, z', z'', z1, z2) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z2 = v4, v2 >= 0, v3 >= 0 eeval[Let](z, z', z'', z1, z2) -{ 0 }-> eeval[Let][Let](1 + op + t1 + t2, ns, vs, p, v1, eeval(t2, ns, vs, p)) :|: ns >= 0, vs >= 0, z = 1 + op + t1 + t2, z2 = v1, z'' = vs, z' = ns, p >= 0, t1 >= 0, v1 >= 0, op >= 0, t2 >= 0, z1 = p eeval[Let](z, z', z'', z1, z2) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z2 = v4, v2 >= 0, v3 >= 0 eeval[Let][Let](z, z', z'', z1, z2, z3) -{ 0 }-> apply(op, v1, v2) :|: vs >= 0, z'' = vs, t1 >= 0, v1 >= 0, op >= 0, t2 >= 0, v2 >= 0, z3 = v2, ns >= 0, z = 1 + op + t1 + t2, z2 = v1, z' = ns, p >= 0, z1 = p eeval[Let][Let](z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z1 = v3, z3 = v5, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, v5 >= 0, z = v0, z' = v1, z2 = v4, v2 >= 0, v3 >= 0 eeval[Let][Let][Let](z, z', z'', z1, z2, z3, z4) -{ 0 }-> eeval(ef, 1 + nf + 0, 1 + v + 0, p) :|: z2 = ef, z4 = v, vs >= 0, v >= 0, z'' = vs, e >= 0, z = e, ns >= 0, nf >= 0, ef >= 0, z3 = nf, z' = ns, p >= 0, z1 = p eeval[Let][Let][Let](z, z', z'', z1, z2, z3, z4) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, v6 >= 0, z'' = v2, v1 >= 0, v5 >= 0, z = v0, z' = v1, z2 = v4, v2 >= 0, v3 >= 0, z3 = v5, v4 >= 0, z4 = v6 eeval[True][Ite](z, z', z'', z1, z2) -{ 0 }-> 2 :|: z = 2, z'' = ns, ns >= 0, vs >= 0, z' = e, p >= 0, e >= 0, z2 = p, z1 = vs eeval[True][Ite](z, z', z'', z1, z2) -{ 0 }-> 1 :|: z'' = ns, ns >= 0, vs >= 0, z' = e, z = 1, p >= 0, e >= 0, z2 = p, z1 = vs eeval[True][Ite](z, z', z'', z1, z2) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z2 = v4, v2 >= 0, v3 >= 0 eqExp(z, z') -{ 1 }-> and(eqExp(e11, e21), eqExp(e12, e22)) :|: e21 >= 0, z = 1 + e11 + e12, e11 >= 0, e22 >= 0, e12 >= 0, z' = 1 + e21 + e22 eqExp(z, z') -{ 1 }-> and(eqExp(eq11, eq21), eqExp(eq12, eq22)) :|: z = 1 + eq11 + eq12, eq21 >= 0, z' = 1 + eq21 + eq22, eq22 >= 0, eq11 >= 0, eq12 >= 0 eqExp(z, z') -{ 1 }-> and(eqExp(i1, i2), and(eqExp(t1, t2), eqExp(e1, e2))) :|: z = 1 + i1 + t1 + e1, i1 >= 0, t1 >= 0, e1 >= 0, z' = 1 + i2 + t2 + e2, i2 >= 0, e2 >= 0, t2 >= 0 eqExp(z, z') -{ 1 }-> and(2, and(eqExp(b11, b21), eqExp(b12, b22))) :|: o1 >= 0, b12 >= 0, z = 1 + o1 + b11 + b12, z' = 1 + o2 + b21 + b22, o2 >= 0, b11 >= 0, b21 >= 0, b22 >= 0 eqExp(z, z') -{ 1 }-> and(!EQ(fn1, fn2), eqExp(fe1, fe2)) :|: z = 1 + fn1 + fe1, fn2 >= 0, z' = 1 + fn2 + fe2, fe1 >= 0, fe2 >= 0, fn1 >= 0 eqExp(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 eqExp(z, z') -{ 1 }-> 2 :|: z = 2, z' = 2 eqExp(z, z') -{ 1 }-> 1 :|: z = 1 + e11 + e12, e11 >= 0, e12 >= 0, z' = 1 eqExp(z, z') -{ 1 }-> 1 :|: z' = 2, z = 1 + e11 + e12, e11 >= 0, e12 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z = 1 + e11 + e12, e11 >= 0, fn2 >= 0, e12 >= 0, z' = 1 + fn2 + fe2, fe2 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: eq21 >= 0, z' = 1 + eq21 + eq22, z = 1 + e11 + e12, e11 >= 0, eq22 >= 0, e12 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z = 1 + e11 + e12, e11 >= 0, e12 >= 0, z' = 1 + i2 + t2 + e2, i2 >= 0, e2 >= 0, t2 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z = 1 + e11 + e12, e11 >= 0, op2 >= 0, b21 >= 0, e12 >= 0, b22 >= 0, z' = 1 + op2 + b21 + b22 eqExp(z, z') -{ 1 }-> 1 :|: z' = 1 + v2, z = 1 + e11 + e12, e11 >= 0, e12 >= 0, v2 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: e21 >= 0, z = 1, e22 >= 0, z' = 1 + e21 + e22 eqExp(z, z') -{ 1 }-> 1 :|: z' = 2, z = 1 eqExp(z, z') -{ 1 }-> 1 :|: z = 1, fn2 >= 0, z' = 1 + fn2 + fe2, fe2 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: eq21 >= 0, z = 1, z' = 1 + eq21 + eq22, eq22 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z = 1, z' = 1 + i2 + t2 + e2, i2 >= 0, e2 >= 0, t2 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z = 1, op2 >= 0, b21 >= 0, b22 >= 0, z' = 1 + op2 + b21 + b22 eqExp(z, z') -{ 1 }-> 1 :|: z = 1, z' = 1 + v2, v2 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z = 2, e21 >= 0, e22 >= 0, z' = 1 + e21 + e22 eqExp(z, z') -{ 1 }-> 1 :|: z = 2, z' = 1 eqExp(z, z') -{ 1 }-> 1 :|: z = 2, fn2 >= 0, z' = 1 + fn2 + fe2, fe2 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z = 2, eq21 >= 0, z' = 1 + eq21 + eq22, eq22 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z = 2, z' = 1 + i2 + t2 + e2, i2 >= 0, e2 >= 0, t2 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z = 2, op2 >= 0, b21 >= 0, b22 >= 0, z' = 1 + op2 + b21 + b22 eqExp(z, z') -{ 1 }-> 1 :|: z = 2, z' = 1 + v2, v2 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: e21 >= 0, z = 1 + fn1 + fe1, e22 >= 0, fe1 >= 0, z' = 1 + e21 + e22, fn1 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z = 1 + fn1 + fe1, z' = 1, fe1 >= 0, fn1 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z' = 2, z = 1 + fn1 + fe1, fe1 >= 0, fn1 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: eq21 >= 0, z' = 1 + eq21 + eq22, z = 1 + fn1 + fe1, eq22 >= 0, fe1 >= 0, fn1 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z = 1 + fn1 + fe1, z' = 1 + i2 + t2 + e2, i2 >= 0, e2 >= 0, fe1 >= 0, t2 >= 0, fn1 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z = 1 + fn1 + fe1, op2 >= 0, b21 >= 0, b22 >= 0, z' = 1 + op2 + b21 + b22, fe1 >= 0, fn1 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z' = 1 + v2, z = 1 + fn1 + fe1, fe1 >= 0, v2 >= 0, fn1 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z = 1 + eq11 + eq12, e21 >= 0, e22 >= 0, eq11 >= 0, eq12 >= 0, z' = 1 + e21 + e22 eqExp(z, z') -{ 1 }-> 1 :|: z = 1 + eq11 + eq12, eq11 >= 0, eq12 >= 0, z' = 1 eqExp(z, z') -{ 1 }-> 1 :|: z = 1 + eq11 + eq12, z' = 2, eq11 >= 0, eq12 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z = 1 + eq11 + eq12, fn2 >= 0, eq11 >= 0, eq12 >= 0, z' = 1 + fn2 + fe2, fe2 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z = 1 + eq11 + eq12, eq11 >= 0, eq12 >= 0, z' = 1 + i2 + t2 + e2, i2 >= 0, e2 >= 0, t2 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z = 1 + eq11 + eq12, op2 >= 0, b21 >= 0, eq11 >= 0, eq12 >= 0, b22 >= 0, z' = 1 + op2 + b21 + b22 eqExp(z, z') -{ 1 }-> 1 :|: z = 1 + eq11 + eq12, z' = 1 + v2, eq11 >= 0, eq12 >= 0, v2 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z = 1 + i1 + t1 + e1, i1 >= 0, e21 >= 0, e22 >= 0, t1 >= 0, e1 >= 0, z' = 1 + e21 + e22 eqExp(z, z') -{ 1 }-> 1 :|: z = 1 + i1 + t1 + e1, i1 >= 0, t1 >= 0, z' = 1, e1 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z = 1 + i1 + t1 + e1, i1 >= 0, z' = 2, t1 >= 0, e1 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z = 1 + i1 + t1 + e1, i1 >= 0, fn2 >= 0, t1 >= 0, e1 >= 0, z' = 1 + fn2 + fe2, fe2 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z = 1 + i1 + t1 + e1, i1 >= 0, eq21 >= 0, z' = 1 + eq21 + eq22, eq22 >= 0, t1 >= 0, e1 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z = 1 + i1 + t1 + e1, i1 >= 0, op2 >= 0, b21 >= 0, t1 >= 0, e1 >= 0, b22 >= 0, z' = 1 + op2 + b21 + b22 eqExp(z, z') -{ 1 }-> 1 :|: z = 1 + i1 + t1 + e1, i1 >= 0, z' = 1 + v2, t1 >= 0, e1 >= 0, v2 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: b12 >= 0, e21 >= 0, e22 >= 0, op1 >= 0, b11 >= 0, z = 1 + op1 + b11 + b12, z' = 1 + e21 + e22 eqExp(z, z') -{ 1 }-> 1 :|: b12 >= 0, op1 >= 0, b11 >= 0, z = 1 + op1 + b11 + b12, z' = 1 eqExp(z, z') -{ 1 }-> 1 :|: b12 >= 0, z' = 2, op1 >= 0, b11 >= 0, z = 1 + op1 + b11 + b12 eqExp(z, z') -{ 1 }-> 1 :|: b12 >= 0, op1 >= 0, b11 >= 0, fn2 >= 0, z = 1 + op1 + b11 + b12, z' = 1 + fn2 + fe2, fe2 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: b12 >= 0, eq21 >= 0, z' = 1 + eq21 + eq22, eq22 >= 0, op1 >= 0, b11 >= 0, z = 1 + op1 + b11 + b12 eqExp(z, z') -{ 1 }-> 1 :|: b12 >= 0, op1 >= 0, b11 >= 0, z = 1 + op1 + b11 + b12, z' = 1 + i2 + t2 + e2, i2 >= 0, e2 >= 0, t2 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: b12 >= 0, z' = 1 + v2, op1 >= 0, b11 >= 0, z = 1 + op1 + b11 + b12, v2 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: e21 >= 0, z = 1 + v1, e22 >= 0, v1 >= 0, z' = 1 + e21 + e22 eqExp(z, z') -{ 1 }-> 1 :|: z = 1 + v1, v1 >= 0, z' = 1 eqExp(z, z') -{ 1 }-> 1 :|: z' = 2, z = 1 + v1, v1 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z = 1 + v1, fn2 >= 0, v1 >= 0, z' = 1 + fn2 + fe2, fe2 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: eq21 >= 0, z' = 1 + eq21 + eq22, z = 1 + v1, eq22 >= 0, v1 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z = 1 + v1, v1 >= 0, z' = 1 + i2 + t2 + e2, i2 >= 0, e2 >= 0, t2 >= 0 eqExp(z, z') -{ 1 }-> 1 :|: z = 1 + v1, op2 >= 0, b21 >= 0, v1 >= 0, b22 >= 0, z' = 1 + op2 + b21 + b22 eqExp(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 eqExp(z, z') -{ 1 }-> !EQ(v1, v2) :|: z' = 1 + v2, z = 1 + v1, v1 >= 0, v2 >= 0 eqOps(z, z') -{ 1 }-> 2 :|: z' = o2, o1 >= 0, o2 >= 0, z = o1 getBsfFirstTerm(z) -{ 1 }-> t1 :|: z = 1 + op + t1 + t2, t1 >= 0, op >= 0, t2 >= 0 getBsfFirstTerm(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 getBsfOp(z) -{ 1 }-> op :|: z = 1 + op + t1 + t2, t1 >= 0, op >= 0, t2 >= 0 getBsfOp(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 getBsfSecondTerm(z) -{ 1 }-> t2 :|: z = 1 + op + t1 + t2, t1 >= 0, op >= 0, t2 >= 0 getBsfSecondTerm(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 getConst(z) -{ 1 }-> int :|: int >= 0, z = 1 + int getConst(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 getEqFirst(z) -{ 1 }-> f :|: f >= 0, z = 1 + f + s, s >= 0 getEqFirst(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 getEqSecond(z) -{ 1 }-> s :|: f >= 0, z = 1 + f + s, s >= 0 getEqSecond(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 getFuncExp(z) -{ 1 }-> e :|: n >= 0, z = 1 + n + e, e >= 0 getFuncExp(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 getFuncName(z) -{ 1 }-> n :|: n >= 0, z = 1 + n + e, e >= 0 getFuncName(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 getIfFalse(z) -{ 1 }-> e :|: i >= 0, t >= 0, e >= 0, z = 1 + i + t + e getIfFalse(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 getIfGuard(z) -{ 1 }-> i :|: i >= 0, t >= 0, e >= 0, z = 1 + i + t + e getIfGuard(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 getIfTrue(z) -{ 1 }-> t :|: i >= 0, t >= 0, e >= 0, z = 1 + i + t + e getIfTrue(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 getVar(z) -{ 1 }-> int :|: int >= 0, z = 1 + int getVar(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 lookbody(z, z') -{ 1 }-> lookbody[Ite](!EQ(f, n), f, 1 + (1 + n + e) + xs) :|: f >= 0, n >= 0, xs >= 0, z = f, z' = 1 + (1 + n + e) + xs, e >= 0 lookbody(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 lookbody[Ite](z, z', z'') -{ 0 }-> e :|: z = 2, f >= 0, n >= 0, xs >= 0, z'' = 1 + (1 + n + e) + xs, z' = f, e >= 0 lookbody[Ite](z, z', z'') -{ 0 }-> lookbody(f, xs) :|: f >= 0, xs >= 0, z = 1, x >= 0, z' = f, z'' = 1 + x + xs lookbody[Ite](z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 lookname(z, z') -{ 1 }-> lookname[Ite](!EQ(f, n), f, 1 + (1 + n + e) + xs) :|: f >= 0, n >= 0, xs >= 0, z = f, z' = 1 + (1 + n + e) + xs, e >= 0 lookname(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 lookname[Ite](z, z', z'') -{ 0 }-> n :|: z = 2, f >= 0, n >= 0, xs >= 0, z'' = 1 + (1 + n + e) + xs, z' = f, e >= 0 lookname[Ite](z, z', z'') -{ 0 }-> lookname(f, xs) :|: f >= 0, xs >= 0, z = 1, x >= 0, z' = f, z'' = 1 + x + xs lookname[Ite](z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 lookvar(z, z', z'') -{ 1 }-> lookvar[Ite](!EQ(x', x), x', 1 + x + xs, vs) :|: xs >= 0, vs >= 0, z' = 1 + x + xs, x' >= 0, x >= 0, z'' = vs, z = x' lookvar(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 lookvar[Ite](z, z', z'', z1) -{ 0 }-> x :|: z = 2, z'' = ns, z' = x', xs >= 0, ns >= 0, z1 = 1 + x + xs, x' >= 0, x >= 0 lookvar[Ite](z, z', z'', z1) -{ 0 }-> lookvar(x', xs', xs) :|: z' = x', xs >= 0, z1 = 1 + x + xs, z = 1, z'' = 1 + x'' + xs', x' >= 0, xs' >= 0, x >= 0, x'' >= 0 lookvar[Ite](z, z', z'', z1) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 run(z, z') -{ 1 }-> run[Let][Let](1 + (1 + f0 + e) + xs, input, f0, lookbody(f0, 1 + (1 + f0 + e) + xs)) :|: z' = input, f0 >= 0, xs >= 0, input >= 0, e >= 0, z = 1 + (1 + f0 + e) + xs run(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 run[Let](z, z', z'', z1, z2) -{ 0 }-> eeval(ef, 1 + nf + 0, 1 + input + 0, p) :|: z' = input, z2 = nf, f0 >= 0, z1 = ef, z'' = f0, nf >= 0, ef >= 0, input >= 0, p >= 0, z = p run[Let](z, z', z'', z1, z2) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z2 = v4, v2 >= 0, v3 >= 0 run[Let][Let](z, z', z'', z1) -{ 0 }-> run[Let](p, input, f0, ef, lookname(f0, p)) :|: z' = input, f0 >= 0, z1 = ef, z'' = f0, ef >= 0, input >= 0, p >= 0, z = p run[Let][Let](z, z', z'', z1) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 Only complete derivations are relevant for the runtime complexity. ---------------------------------------- (17) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (18) Obligation: Complexity Dependency Tuples Problem Rules: !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True eeval[False][Ite](True, Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval[False][Ite](False, Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T run[Let][Let](z0, z1, z2, z3) -> run[Let](z0, z1, z2, z3, lookname(z2, z0)) run[Let](z0, z1, z2, z3, z4) -> eeval(z3, Cons(z4, Nil), Cons(z1, Nil), z0) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) run(Cons(Fun(z0, z1), z2), z3) -> run[Let][Let](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))) eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) checkConstrExp(Error(z0, z1), Error(z2, z3)) -> True checkConstrExp(Error(z0, z1), F) -> False checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(Error(z0, z1), Fun(z2, z3)) -> False checkConstrExp(Error(z0, z1), Eq(z2, z3)) -> False checkConstrExp(Error(z0, z1), ITE(z2, z3, z4)) -> False checkConstrExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False checkConstrExp(Error(z0, z1), Var(z2)) -> False checkConstrExp(F, Error(z0, z1)) -> False checkConstrExp(F, F) -> True checkConstrExp(F, T) -> False checkConstrExp(F, Fun(z0, z1)) -> False checkConstrExp(F, Eq(z0, z1)) -> False checkConstrExp(F, ITE(z0, z1, z2)) -> False checkConstrExp(F, Bsf(z0, z1, z2)) -> False checkConstrExp(F, Var(z0)) -> False checkConstrExp(T, Error(z0, z1)) -> False checkConstrExp(T, F) -> False checkConstrExp(T, T) -> True checkConstrExp(T, Fun(z0, z1)) -> False checkConstrExp(T, Eq(z0, z1)) -> False checkConstrExp(T, ITE(z0, z1, z2)) -> False checkConstrExp(T, Bsf(z0, z1, z2)) -> False checkConstrExp(T, Var(z0)) -> False checkConstrExp(Fun(z0, z1), Error(z2, z3)) -> False checkConstrExp(Fun(z0, z1), F) -> False checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Fun(z0, z1), Fun(z2, z3)) -> True checkConstrExp(Fun(z0, z1), Eq(z2, z3)) -> False checkConstrExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False checkConstrExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False checkConstrExp(Fun(z0, z1), Var(z2)) -> False checkConstrExp(Eq(z0, z1), Error(z2, z3)) -> False checkConstrExp(Eq(z0, z1), F) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), Fun(z2, z3)) -> False checkConstrExp(Eq(z0, z1), Eq(z2, z3)) -> True checkConstrExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False checkConstrExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False checkConstrExp(Eq(z0, z1), Var(z2)) -> False checkConstrExp(ITE(z0, z1, z2), Error(z3, z4)) -> False checkConstrExp(ITE(z0, z1, z2), F) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False checkConstrExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False checkConstrExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> True checkConstrExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False checkConstrExp(ITE(z0, z1, z2), Var(z3)) -> False checkConstrExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False checkConstrExp(Bsf(z0, z1, z2), F) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False checkConstrExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False checkConstrExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False checkConstrExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> True checkConstrExp(Bsf(z0, z1, z2), Var(z3)) -> False checkConstrExp(Var(z0), Error(z1, z2)) -> False checkConstrExp(Var(z0), F) -> False checkConstrExp(Var(z0), T) -> False checkConstrExp(Var(z0), Fun(z1, z2)) -> False checkConstrExp(Var(z0), Eq(z1, z2)) -> False checkConstrExp(Var(z0), ITE(z1, z2, z3)) -> False checkConstrExp(Var(z0), Bsf(z1, z2, z3)) -> False checkConstrExp(Var(z0), Var(z1)) -> True lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) getVar(Var(z0)) -> z0 getIfTrue(ITE(z0, z1, z2)) -> z1 getIfGuard(ITE(z0, z1, z2)) -> z0 getIfFalse(ITE(z0, z1, z2)) -> z2 getFuncName(Fun(z0, z1)) -> z0 getFuncExp(Fun(z0, z1)) -> z1 getEqSecond(Eq(z0, z1)) -> z1 getEqFirst(Eq(z0, z1)) -> z0 getConst(Cst(z0)) -> z0 getBsfSecondTerm(Bsf(z0, z1, z2)) -> z2 getBsfOp(Bsf(z0, z1, z2)) -> z0 getBsfFirstTerm(Bsf(z0, z1, z2)) -> z1 apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) eqOps(z0, z1) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) !EQ'(0, S(z0)) -> c1 !EQ'(S(z0), 0) -> c2 !EQ'(0, 0) -> c3 AND(False, False) -> c4 AND(True, False) -> c5 AND(False, True) -> c6 AND(True, True) -> c7 EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c8(EEVAL[TRUE][ITE](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c9(EEVAL[TRUE][ITE](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c10(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKVAR[ITE](True, z0, z1, Cons(z2, z3)) -> c12 LOOKNAME[ITE](True, z0, Cons(Fun(z1, z2), z3)) -> c13 LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](True, z0, Cons(Fun(z1, z2), z3)) -> c15 LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) EEVAL[TRUE][ITE](False, z0, z1, z2, z3) -> c23 EEVAL[TRUE][ITE](True, z0, z1, z2, z3) -> c24 APPLY[ITE](False, z0, z1, z2) -> c25 APPLY[ITE](True, z0, z1, z2) -> c26 RUN[LET][LET](z0, z1, z2, z3) -> c27(RUN[LET](z0, z1, z2, z3, lookname(z2, z0)), LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EEVAL[TRUE][ITE](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EEVAL[TRUE][ITE](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33(EEVAL[FALSE][ITE](False, Error(z0, z1), z2, z3, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), CHECKCONSTREXP(eeval(z0, z3, z4, z5), T), EEVAL(z0, z3, z4, z5)) EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) RUN(Cons(Fun(z0, z1), z2), z3) -> c39(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))), LOOKBODY(z0, Cons(Fun(z0, z1), z2))) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(AND(eqExp(z0, z2), eqExp(z1, z3)), EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(AND(eqExp(z0, z2), eqExp(z1, z3)), EQEXP(z1, z3)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(AND(!EQ(z0, z2), eqExp(z1, z3)), !EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(AND(!EQ(z0, z2), eqExp(z1, z3)), EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(AND(eqExp(z0, z2), eqExp(z1, z3)), EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(AND(eqExp(z0, z2), eqExp(z1, z3)), EQEXP(z1, z3)) EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(AND(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))), EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(AND(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))), AND(eqExp(z1, z4), eqExp(z2, z5)), EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(AND(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))), AND(eqExp(z1, z4), eqExp(z2, z5)), EQEXP(z2, z5)) EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(AND(True, and(eqExp(z1, z4), eqExp(z2, z5))), AND(eqExp(z1, z4), eqExp(z2, z5)), EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(AND(True, and(eqExp(z1, z4), eqExp(z2, z5))), AND(eqExp(z1, z4), eqExp(z2, z5)), EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) CHECKCONSTREXP(Error(z0, z1), Error(z2, z3)) -> c110 CHECKCONSTREXP(Error(z0, z1), F) -> c111 CHECKCONSTREXP(Error(z0, z1), T) -> c112 CHECKCONSTREXP(Error(z0, z1), Fun(z2, z3)) -> c113 CHECKCONSTREXP(Error(z0, z1), Eq(z2, z3)) -> c114 CHECKCONSTREXP(Error(z0, z1), ITE(z2, z3, z4)) -> c115 CHECKCONSTREXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c116 CHECKCONSTREXP(Error(z0, z1), Var(z2)) -> c117 CHECKCONSTREXP(F, Error(z0, z1)) -> c118 CHECKCONSTREXP(F, F) -> c119 CHECKCONSTREXP(F, T) -> c120 CHECKCONSTREXP(F, Fun(z0, z1)) -> c121 CHECKCONSTREXP(F, Eq(z0, z1)) -> c122 CHECKCONSTREXP(F, ITE(z0, z1, z2)) -> c123 CHECKCONSTREXP(F, Bsf(z0, z1, z2)) -> c124 CHECKCONSTREXP(F, Var(z0)) -> c125 CHECKCONSTREXP(T, Error(z0, z1)) -> c126 CHECKCONSTREXP(T, F) -> c127 CHECKCONSTREXP(T, T) -> c128 CHECKCONSTREXP(T, Fun(z0, z1)) -> c129 CHECKCONSTREXP(T, Eq(z0, z1)) -> c130 CHECKCONSTREXP(T, ITE(z0, z1, z2)) -> c131 CHECKCONSTREXP(T, Bsf(z0, z1, z2)) -> c132 CHECKCONSTREXP(T, Var(z0)) -> c133 CHECKCONSTREXP(Fun(z0, z1), Error(z2, z3)) -> c134 CHECKCONSTREXP(Fun(z0, z1), F) -> c135 CHECKCONSTREXP(Fun(z0, z1), T) -> c136 CHECKCONSTREXP(Fun(z0, z1), Fun(z2, z3)) -> c137 CHECKCONSTREXP(Fun(z0, z1), Eq(z2, z3)) -> c138 CHECKCONSTREXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c139 CHECKCONSTREXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c140 CHECKCONSTREXP(Fun(z0, z1), Var(z2)) -> c141 CHECKCONSTREXP(Eq(z0, z1), Error(z2, z3)) -> c142 CHECKCONSTREXP(Eq(z0, z1), F) -> c143 CHECKCONSTREXP(Eq(z0, z1), T) -> c144 CHECKCONSTREXP(Eq(z0, z1), Fun(z2, z3)) -> c145 CHECKCONSTREXP(Eq(z0, z1), Eq(z2, z3)) -> c146 CHECKCONSTREXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c147 CHECKCONSTREXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c148 CHECKCONSTREXP(Eq(z0, z1), Var(z2)) -> c149 CHECKCONSTREXP(ITE(z0, z1, z2), Error(z3, z4)) -> c150 CHECKCONSTREXP(ITE(z0, z1, z2), F) -> c151 CHECKCONSTREXP(ITE(z0, z1, z2), T) -> c152 CHECKCONSTREXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c153 CHECKCONSTREXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c154 CHECKCONSTREXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c155 CHECKCONSTREXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c156 CHECKCONSTREXP(ITE(z0, z1, z2), Var(z3)) -> c157 CHECKCONSTREXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c158 CHECKCONSTREXP(Bsf(z0, z1, z2), F) -> c159 CHECKCONSTREXP(Bsf(z0, z1, z2), T) -> c160 CHECKCONSTREXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c161 CHECKCONSTREXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c162 CHECKCONSTREXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c163 CHECKCONSTREXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c164 CHECKCONSTREXP(Bsf(z0, z1, z2), Var(z3)) -> c165 CHECKCONSTREXP(Var(z0), Error(z1, z2)) -> c166 CHECKCONSTREXP(Var(z0), F) -> c167 CHECKCONSTREXP(Var(z0), T) -> c168 CHECKCONSTREXP(Var(z0), Fun(z1, z2)) -> c169 CHECKCONSTREXP(Var(z0), Eq(z1, z2)) -> c170 CHECKCONSTREXP(Var(z0), ITE(z1, z2, z3)) -> c171 CHECKCONSTREXP(Var(z0), Bsf(z1, z2, z3)) -> c172 CHECKCONSTREXP(Var(z0), Var(z1)) -> c173 LOOKNAME(z0, Cons(Fun(z1, z2), z3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKBODY(z0, Cons(Fun(z1, z2), z3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) GETVAR(Var(z0)) -> c176 GETIFTRUE(ITE(z0, z1, z2)) -> c177 GETIFGUARD(ITE(z0, z1, z2)) -> c178 GETIFFALSE(ITE(z0, z1, z2)) -> c179 GETFUNCNAME(Fun(z0, z1)) -> c180 GETFUNCEXP(Fun(z0, z1)) -> c181 GETEQSECOND(Eq(z0, z1)) -> c182 GETEQFIRST(Eq(z0, z1)) -> c183 GETCONST(Cst(z0)) -> c184 GETBSFSECONDTERM(Bsf(z0, z1, z2)) -> c185 GETBSFOP(Bsf(z0, z1, z2)) -> c186 GETBSFFIRSTTERM(Bsf(z0, z1, z2)) -> c187 APPLY(z0, z1, z2) -> c188(APPLY[ITE](eqExp(z1, z2), z0, z1, z2), EQEXP(z1, z2)) LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) EQOPS(z0, z1) -> c190 S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EEVAL[TRUE][ITE](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EEVAL[TRUE][ITE](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33(EEVAL[FALSE][ITE](False, Error(z0, z1), z2, z3, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), CHECKCONSTREXP(eeval(z0, z3, z4, z5), T), EEVAL(z0, z3, z4, z5)) EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) RUN(Cons(Fun(z0, z1), z2), z3) -> c39(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))), LOOKBODY(z0, Cons(Fun(z0, z1), z2))) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(AND(eqExp(z0, z2), eqExp(z1, z3)), EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(AND(eqExp(z0, z2), eqExp(z1, z3)), EQEXP(z1, z3)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(AND(!EQ(z0, z2), eqExp(z1, z3)), !EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(AND(!EQ(z0, z2), eqExp(z1, z3)), EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(AND(eqExp(z0, z2), eqExp(z1, z3)), EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(AND(eqExp(z0, z2), eqExp(z1, z3)), EQEXP(z1, z3)) EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(AND(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))), EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(AND(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))), AND(eqExp(z1, z4), eqExp(z2, z5)), EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(AND(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))), AND(eqExp(z1, z4), eqExp(z2, z5)), EQEXP(z2, z5)) EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(AND(True, and(eqExp(z1, z4), eqExp(z2, z5))), AND(eqExp(z1, z4), eqExp(z2, z5)), EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(AND(True, and(eqExp(z1, z4), eqExp(z2, z5))), AND(eqExp(z1, z4), eqExp(z2, z5)), EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) CHECKCONSTREXP(Error(z0, z1), Error(z2, z3)) -> c110 CHECKCONSTREXP(Error(z0, z1), F) -> c111 CHECKCONSTREXP(Error(z0, z1), T) -> c112 CHECKCONSTREXP(Error(z0, z1), Fun(z2, z3)) -> c113 CHECKCONSTREXP(Error(z0, z1), Eq(z2, z3)) -> c114 CHECKCONSTREXP(Error(z0, z1), ITE(z2, z3, z4)) -> c115 CHECKCONSTREXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c116 CHECKCONSTREXP(Error(z0, z1), Var(z2)) -> c117 CHECKCONSTREXP(F, Error(z0, z1)) -> c118 CHECKCONSTREXP(F, F) -> c119 CHECKCONSTREXP(F, T) -> c120 CHECKCONSTREXP(F, Fun(z0, z1)) -> c121 CHECKCONSTREXP(F, Eq(z0, z1)) -> c122 CHECKCONSTREXP(F, ITE(z0, z1, z2)) -> c123 CHECKCONSTREXP(F, Bsf(z0, z1, z2)) -> c124 CHECKCONSTREXP(F, Var(z0)) -> c125 CHECKCONSTREXP(T, Error(z0, z1)) -> c126 CHECKCONSTREXP(T, F) -> c127 CHECKCONSTREXP(T, T) -> c128 CHECKCONSTREXP(T, Fun(z0, z1)) -> c129 CHECKCONSTREXP(T, Eq(z0, z1)) -> c130 CHECKCONSTREXP(T, ITE(z0, z1, z2)) -> c131 CHECKCONSTREXP(T, Bsf(z0, z1, z2)) -> c132 CHECKCONSTREXP(T, Var(z0)) -> c133 CHECKCONSTREXP(Fun(z0, z1), Error(z2, z3)) -> c134 CHECKCONSTREXP(Fun(z0, z1), F) -> c135 CHECKCONSTREXP(Fun(z0, z1), T) -> c136 CHECKCONSTREXP(Fun(z0, z1), Fun(z2, z3)) -> c137 CHECKCONSTREXP(Fun(z0, z1), Eq(z2, z3)) -> c138 CHECKCONSTREXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c139 CHECKCONSTREXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c140 CHECKCONSTREXP(Fun(z0, z1), Var(z2)) -> c141 CHECKCONSTREXP(Eq(z0, z1), Error(z2, z3)) -> c142 CHECKCONSTREXP(Eq(z0, z1), F) -> c143 CHECKCONSTREXP(Eq(z0, z1), T) -> c144 CHECKCONSTREXP(Eq(z0, z1), Fun(z2, z3)) -> c145 CHECKCONSTREXP(Eq(z0, z1), Eq(z2, z3)) -> c146 CHECKCONSTREXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c147 CHECKCONSTREXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c148 CHECKCONSTREXP(Eq(z0, z1), Var(z2)) -> c149 CHECKCONSTREXP(ITE(z0, z1, z2), Error(z3, z4)) -> c150 CHECKCONSTREXP(ITE(z0, z1, z2), F) -> c151 CHECKCONSTREXP(ITE(z0, z1, z2), T) -> c152 CHECKCONSTREXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c153 CHECKCONSTREXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c154 CHECKCONSTREXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c155 CHECKCONSTREXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c156 CHECKCONSTREXP(ITE(z0, z1, z2), Var(z3)) -> c157 CHECKCONSTREXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c158 CHECKCONSTREXP(Bsf(z0, z1, z2), F) -> c159 CHECKCONSTREXP(Bsf(z0, z1, z2), T) -> c160 CHECKCONSTREXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c161 CHECKCONSTREXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c162 CHECKCONSTREXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c163 CHECKCONSTREXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c164 CHECKCONSTREXP(Bsf(z0, z1, z2), Var(z3)) -> c165 CHECKCONSTREXP(Var(z0), Error(z1, z2)) -> c166 CHECKCONSTREXP(Var(z0), F) -> c167 CHECKCONSTREXP(Var(z0), T) -> c168 CHECKCONSTREXP(Var(z0), Fun(z1, z2)) -> c169 CHECKCONSTREXP(Var(z0), Eq(z1, z2)) -> c170 CHECKCONSTREXP(Var(z0), ITE(z1, z2, z3)) -> c171 CHECKCONSTREXP(Var(z0), Bsf(z1, z2, z3)) -> c172 CHECKCONSTREXP(Var(z0), Var(z1)) -> c173 LOOKNAME(z0, Cons(Fun(z1, z2), z3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKBODY(z0, Cons(Fun(z1, z2), z3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) GETVAR(Var(z0)) -> c176 GETIFTRUE(ITE(z0, z1, z2)) -> c177 GETIFGUARD(ITE(z0, z1, z2)) -> c178 GETIFFALSE(ITE(z0, z1, z2)) -> c179 GETFUNCNAME(Fun(z0, z1)) -> c180 GETFUNCEXP(Fun(z0, z1)) -> c181 GETEQSECOND(Eq(z0, z1)) -> c182 GETEQFIRST(Eq(z0, z1)) -> c183 GETCONST(Cst(z0)) -> c184 GETBSFSECONDTERM(Bsf(z0, z1, z2)) -> c185 GETBSFOP(Bsf(z0, z1, z2)) -> c186 GETBSFFIRSTTERM(Bsf(z0, z1, z2)) -> c187 APPLY(z0, z1, z2) -> c188(APPLY[ITE](eqExp(z1, z2), z0, z1, z2), EQEXP(z1, z2)) LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) EQOPS(z0, z1) -> c190 K tuples:none Defined Rule Symbols: eeval_4, run_2, eqExp_2, checkConstrExp_2, lookname_2, lookbody_2, getVar_1, getIfTrue_1, getIfGuard_1, getIfFalse_1, getFuncName_1, getFuncExp_1, getEqSecond_1, getEqFirst_1, getConst_1, getBsfSecondTerm_1, getBsfOp_1, getBsfFirstTerm_1, apply_3, lookvar_3, eqOps_2, !EQ_2, and_2, eeval[False][Ite]_5, lookvar[Ite]_4, lookname[Ite]_3, lookbody[Ite]_3, eeval[Ite]_5, eeval[False][Let]_5, eeval[False][Let][Let]_6, eeval[Let]_5, eeval[Let][Let]_6, eeval[True][Ite]_5, apply[Ite]_4, run[Let][Let]_4, run[Let]_5, eeval[Let][Let][Let]_7 Defined Pair Symbols: !EQ'_2, AND_2, EEVAL[FALSE][ITE]_5, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, EEVAL[TRUE][ITE]_5, APPLY[ITE]_4, RUN[LET][LET]_4, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, RUN_2, EQEXP_2, CHECKCONSTREXP_2, LOOKNAME_2, LOOKBODY_2, GETVAR_1, GETIFTRUE_1, GETIFGUARD_1, GETIFFALSE_1, GETFUNCNAME_1, GETFUNCEXP_1, GETEQSECOND_1, GETEQFIRST_1, GETCONST_1, GETBSFSECONDTERM_1, GETBSFOP_1, GETBSFFIRSTTERM_1, APPLY_3, LOOKVAR_3, EQOPS_2 Compound Symbols: c_1, c1, c2, c3, c4, c5, c6, c7, c8_3, c9_3, c10_2, c11_1, c12, c13, c14_1, c15, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c23, c24, c25, c26, c27_2, c28_1, c29_1, c30_2, c31_3, c32_3, c33_1, c34, c35, c36_3, c37_2, c38_1, c39_2, c40_2, c41_2, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c68_2, c69_2, c70, c71, c72, c73, c74, c75, c76, c77, c78_2, c79_2, c80, c81, c82, c83, c84, c85, c86, c87, c88_2, c89_3, c90_3, c91, c92, c93, c94, c95, c96, c97, c98, c99_3, c100_3, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c110, c111, c112, c113, c114, c115, c116, c117, c118, c119, c120, c121, c122, c123, c124, c125, c126, c127, c128, c129, c130, c131, c132, c133, c134, c135, c136, c137, c138, c139, c140, c141, c142, c143, c144, c145, c146, c147, c148, c149, c150, c151, c152, c153, c154, c155, c156, c157, c158, c159, c160, c161, c162, c163, c164, c165, c166, c167, c168, c169, c170, c171, c172, c173, c174_2, c175_2, c176, c177, c178, c179, c180, c181, c182, c183, c184, c185, c186, c187, c188_2, c189_2, c190 ---------------------------------------- (19) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 91 trailing nodes: CHECKCONSTREXP(F, Eq(z0, z1)) -> c122 GETBSFOP(Bsf(z0, z1, z2)) -> c186 !EQ'(S(z0), 0) -> c2 AND(True, True) -> c7 CHECKCONSTREXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c155 CHECKCONSTREXP(Eq(z0, z1), Error(z2, z3)) -> c142 CHECKCONSTREXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c140 CHECKCONSTREXP(T, Eq(z0, z1)) -> c130 GETEQSECOND(Eq(z0, z1)) -> c182 CHECKCONSTREXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c156 EEVAL[TRUE][ITE](True, z0, z1, z2, z3) -> c24 CHECKCONSTREXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c148 GETIFGUARD(ITE(z0, z1, z2)) -> c178 CHECKCONSTREXP(Eq(z0, z1), Fun(z2, z3)) -> c145 CHECKCONSTREXP(Var(z0), Bsf(z1, z2, z3)) -> c172 CHECKCONSTREXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c161 CHECKCONSTREXP(F, Error(z0, z1)) -> c118 CHECKCONSTREXP(Error(z0, z1), Eq(z2, z3)) -> c114 CHECKCONSTREXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c164 CHECKCONSTREXP(Eq(z0, z1), F) -> c143 EQOPS(z0, z1) -> c190 GETCONST(Cst(z0)) -> c184 CHECKCONSTREXP(Var(z0), ITE(z1, z2, z3)) -> c171 CHECKCONSTREXP(T, Var(z0)) -> c133 GETEQFIRST(Eq(z0, z1)) -> c183 CHECKCONSTREXP(Fun(z0, z1), Eq(z2, z3)) -> c138 CHECKCONSTREXP(Error(z0, z1), Fun(z2, z3)) -> c113 CHECKCONSTREXP(Error(z0, z1), F) -> c111 GETIFTRUE(ITE(z0, z1, z2)) -> c177 CHECKCONSTREXP(Error(z0, z1), Error(z2, z3)) -> c110 CHECKCONSTREXP(T, Bsf(z0, z1, z2)) -> c132 GETFUNCEXP(Fun(z0, z1)) -> c181 CHECKCONSTREXP(Eq(z0, z1), Var(z2)) -> c149 CHECKCONSTREXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c147 GETVAR(Var(z0)) -> c176 GETFUNCNAME(Fun(z0, z1)) -> c180 CHECKCONSTREXP(Eq(z0, z1), T) -> c144 CHECKCONSTREXP(ITE(z0, z1, z2), Var(z3)) -> c157 CHECKCONSTREXP(Fun(z0, z1), F) -> c135 APPLY[ITE](False, z0, z1, z2) -> c25 CHECKCONSTREXP(Var(z0), F) -> c167 CHECKCONSTREXP(Bsf(z0, z1, z2), Var(z3)) -> c165 CHECKCONSTREXP(F, ITE(z0, z1, z2)) -> c123 CHECKCONSTREXP(T, Error(z0, z1)) -> c126 CHECKCONSTREXP(Var(z0), Error(z1, z2)) -> c166 CHECKCONSTREXP(Var(z0), Fun(z1, z2)) -> c169 CHECKCONSTREXP(Var(z0), Eq(z1, z2)) -> c170 CHECKCONSTREXP(ITE(z0, z1, z2), T) -> c152 CHECKCONSTREXP(Error(z0, z1), ITE(z2, z3, z4)) -> c115 CHECKCONSTREXP(ITE(z0, z1, z2), F) -> c151 CHECKCONSTREXP(T, ITE(z0, z1, z2)) -> c131 CHECKCONSTREXP(T, Fun(z0, z1)) -> c129 CHECKCONSTREXP(ITE(z0, z1, z2), Error(z3, z4)) -> c150 GETBSFFIRSTTERM(Bsf(z0, z1, z2)) -> c187 APPLY[ITE](True, z0, z1, z2) -> c26 CHECKCONSTREXP(Fun(z0, z1), Var(z2)) -> c141 AND(False, True) -> c6 AND(False, False) -> c4 CHECKCONSTREXP(Bsf(z0, z1, z2), F) -> c159 CHECKCONSTREXP(F, F) -> c119 LOOKBODY[ITE](True, z0, Cons(Fun(z1, z2), z3)) -> c15 CHECKCONSTREXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c158 CHECKCONSTREXP(F, Var(z0)) -> c125 CHECKCONSTREXP(Error(z0, z1), Var(z2)) -> c117 CHECKCONSTREXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c116 CHECKCONSTREXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c154 CHECKCONSTREXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c139 GETIFFALSE(ITE(z0, z1, z2)) -> c179 CHECKCONSTREXP(F, Fun(z0, z1)) -> c121 AND(True, False) -> c5 GETBSFSECONDTERM(Bsf(z0, z1, z2)) -> c185 LOOKNAME[ITE](True, z0, Cons(Fun(z1, z2), z3)) -> c13 !EQ'(0, 0) -> c3 EEVAL[TRUE][ITE](False, z0, z1, z2, z3) -> c23 CHECKCONSTREXP(Fun(z0, z1), T) -> c136 CHECKCONSTREXP(T, F) -> c127 !EQ'(0, S(z0)) -> c1 CHECKCONSTREXP(Var(z0), T) -> c168 CHECKCONSTREXP(F, Bsf(z0, z1, z2)) -> c124 CHECKCONSTREXP(T, T) -> c128 CHECKCONSTREXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c163 CHECKCONSTREXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c153 CHECKCONSTREXP(F, T) -> c120 CHECKCONSTREXP(Fun(z0, z1), Fun(z2, z3)) -> c137 CHECKCONSTREXP(Eq(z0, z1), Eq(z2, z3)) -> c146 CHECKCONSTREXP(Bsf(z0, z1, z2), T) -> c160 CHECKCONSTREXP(Fun(z0, z1), Error(z2, z3)) -> c134 CHECKCONSTREXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c162 CHECKCONSTREXP(Error(z0, z1), T) -> c112 LOOKVAR[ITE](True, z0, z1, Cons(z2, z3)) -> c12 CHECKCONSTREXP(Var(z0), Var(z1)) -> c173 ---------------------------------------- (20) Obligation: Complexity Dependency Tuples Problem Rules: !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True eeval[False][Ite](True, Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval[False][Ite](False, Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T run[Let][Let](z0, z1, z2, z3) -> run[Let](z0, z1, z2, z3, lookname(z2, z0)) run[Let](z0, z1, z2, z3, z4) -> eeval(z3, Cons(z4, Nil), Cons(z1, Nil), z0) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) run(Cons(Fun(z0, z1), z2), z3) -> run[Let][Let](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))) eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) checkConstrExp(Error(z0, z1), Error(z2, z3)) -> True checkConstrExp(Error(z0, z1), F) -> False checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(Error(z0, z1), Fun(z2, z3)) -> False checkConstrExp(Error(z0, z1), Eq(z2, z3)) -> False checkConstrExp(Error(z0, z1), ITE(z2, z3, z4)) -> False checkConstrExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False checkConstrExp(Error(z0, z1), Var(z2)) -> False checkConstrExp(F, Error(z0, z1)) -> False checkConstrExp(F, F) -> True checkConstrExp(F, T) -> False checkConstrExp(F, Fun(z0, z1)) -> False checkConstrExp(F, Eq(z0, z1)) -> False checkConstrExp(F, ITE(z0, z1, z2)) -> False checkConstrExp(F, Bsf(z0, z1, z2)) -> False checkConstrExp(F, Var(z0)) -> False checkConstrExp(T, Error(z0, z1)) -> False checkConstrExp(T, F) -> False checkConstrExp(T, T) -> True checkConstrExp(T, Fun(z0, z1)) -> False checkConstrExp(T, Eq(z0, z1)) -> False checkConstrExp(T, ITE(z0, z1, z2)) -> False checkConstrExp(T, Bsf(z0, z1, z2)) -> False checkConstrExp(T, Var(z0)) -> False checkConstrExp(Fun(z0, z1), Error(z2, z3)) -> False checkConstrExp(Fun(z0, z1), F) -> False checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Fun(z0, z1), Fun(z2, z3)) -> True checkConstrExp(Fun(z0, z1), Eq(z2, z3)) -> False checkConstrExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False checkConstrExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False checkConstrExp(Fun(z0, z1), Var(z2)) -> False checkConstrExp(Eq(z0, z1), Error(z2, z3)) -> False checkConstrExp(Eq(z0, z1), F) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), Fun(z2, z3)) -> False checkConstrExp(Eq(z0, z1), Eq(z2, z3)) -> True checkConstrExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False checkConstrExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False checkConstrExp(Eq(z0, z1), Var(z2)) -> False checkConstrExp(ITE(z0, z1, z2), Error(z3, z4)) -> False checkConstrExp(ITE(z0, z1, z2), F) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False checkConstrExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False checkConstrExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> True checkConstrExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False checkConstrExp(ITE(z0, z1, z2), Var(z3)) -> False checkConstrExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False checkConstrExp(Bsf(z0, z1, z2), F) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False checkConstrExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False checkConstrExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False checkConstrExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> True checkConstrExp(Bsf(z0, z1, z2), Var(z3)) -> False checkConstrExp(Var(z0), Error(z1, z2)) -> False checkConstrExp(Var(z0), F) -> False checkConstrExp(Var(z0), T) -> False checkConstrExp(Var(z0), Fun(z1, z2)) -> False checkConstrExp(Var(z0), Eq(z1, z2)) -> False checkConstrExp(Var(z0), ITE(z1, z2, z3)) -> False checkConstrExp(Var(z0), Bsf(z1, z2, z3)) -> False checkConstrExp(Var(z0), Var(z1)) -> True lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) getVar(Var(z0)) -> z0 getIfTrue(ITE(z0, z1, z2)) -> z1 getIfGuard(ITE(z0, z1, z2)) -> z0 getIfFalse(ITE(z0, z1, z2)) -> z2 getFuncName(Fun(z0, z1)) -> z0 getFuncExp(Fun(z0, z1)) -> z1 getEqSecond(Eq(z0, z1)) -> z1 getEqFirst(Eq(z0, z1)) -> z0 getConst(Cst(z0)) -> z0 getBsfSecondTerm(Bsf(z0, z1, z2)) -> z2 getBsfOp(Bsf(z0, z1, z2)) -> z0 getBsfFirstTerm(Bsf(z0, z1, z2)) -> z1 apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) eqOps(z0, z1) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c8(EEVAL[TRUE][ITE](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c9(EEVAL[TRUE][ITE](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c10(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET][LET](z0, z1, z2, z3) -> c27(RUN[LET](z0, z1, z2, z3, lookname(z2, z0)), LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EEVAL[TRUE][ITE](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EEVAL[TRUE][ITE](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33(EEVAL[FALSE][ITE](False, Error(z0, z1), z2, z3, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), CHECKCONSTREXP(eeval(z0, z3, z4, z5), T), EEVAL(z0, z3, z4, z5)) EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) RUN(Cons(Fun(z0, z1), z2), z3) -> c39(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))), LOOKBODY(z0, Cons(Fun(z0, z1), z2))) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(AND(eqExp(z0, z2), eqExp(z1, z3)), EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(AND(eqExp(z0, z2), eqExp(z1, z3)), EQEXP(z1, z3)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(AND(!EQ(z0, z2), eqExp(z1, z3)), !EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(AND(!EQ(z0, z2), eqExp(z1, z3)), EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(AND(eqExp(z0, z2), eqExp(z1, z3)), EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(AND(eqExp(z0, z2), eqExp(z1, z3)), EQEXP(z1, z3)) EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(AND(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))), EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(AND(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))), AND(eqExp(z1, z4), eqExp(z2, z5)), EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(AND(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))), AND(eqExp(z1, z4), eqExp(z2, z5)), EQEXP(z2, z5)) EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(AND(True, and(eqExp(z1, z4), eqExp(z2, z5))), AND(eqExp(z1, z4), eqExp(z2, z5)), EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(AND(True, and(eqExp(z1, z4), eqExp(z2, z5))), AND(eqExp(z1, z4), eqExp(z2, z5)), EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) LOOKNAME(z0, Cons(Fun(z1, z2), z3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKBODY(z0, Cons(Fun(z1, z2), z3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) APPLY(z0, z1, z2) -> c188(APPLY[ITE](eqExp(z1, z2), z0, z1, z2), EQEXP(z1, z2)) LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EEVAL[TRUE][ITE](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EEVAL[TRUE][ITE](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33(EEVAL[FALSE][ITE](False, Error(z0, z1), z2, z3, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), CHECKCONSTREXP(eeval(z0, z3, z4, z5), T), EEVAL(z0, z3, z4, z5)) EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) RUN(Cons(Fun(z0, z1), z2), z3) -> c39(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))), LOOKBODY(z0, Cons(Fun(z0, z1), z2))) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(AND(eqExp(z0, z2), eqExp(z1, z3)), EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(AND(eqExp(z0, z2), eqExp(z1, z3)), EQEXP(z1, z3)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(AND(!EQ(z0, z2), eqExp(z1, z3)), !EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(AND(!EQ(z0, z2), eqExp(z1, z3)), EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(AND(eqExp(z0, z2), eqExp(z1, z3)), EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(AND(eqExp(z0, z2), eqExp(z1, z3)), EQEXP(z1, z3)) EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(AND(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))), EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(AND(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))), AND(eqExp(z1, z4), eqExp(z2, z5)), EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(AND(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))), AND(eqExp(z1, z4), eqExp(z2, z5)), EQEXP(z2, z5)) EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(AND(True, and(eqExp(z1, z4), eqExp(z2, z5))), AND(eqExp(z1, z4), eqExp(z2, z5)), EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(AND(True, and(eqExp(z1, z4), eqExp(z2, z5))), AND(eqExp(z1, z4), eqExp(z2, z5)), EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) LOOKNAME(z0, Cons(Fun(z1, z2), z3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKBODY(z0, Cons(Fun(z1, z2), z3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) APPLY(z0, z1, z2) -> c188(APPLY[ITE](eqExp(z1, z2), z0, z1, z2), EQEXP(z1, z2)) LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) K tuples:none Defined Rule Symbols: eeval_4, run_2, eqExp_2, checkConstrExp_2, lookname_2, lookbody_2, getVar_1, getIfTrue_1, getIfGuard_1, getIfFalse_1, getFuncName_1, getFuncExp_1, getEqSecond_1, getEqFirst_1, getConst_1, getBsfSecondTerm_1, getBsfOp_1, getBsfFirstTerm_1, apply_3, lookvar_3, eqOps_2, !EQ_2, and_2, eeval[False][Ite]_5, lookvar[Ite]_4, lookname[Ite]_3, lookbody[Ite]_3, eeval[Ite]_5, eeval[False][Let]_5, eeval[False][Let][Let]_6, eeval[Let]_5, eeval[Let][Let]_6, eeval[True][Ite]_5, apply[Ite]_4, run[Let][Let]_4, run[Let]_5, eeval[Let][Let][Let]_7 Defined Pair Symbols: !EQ'_2, EEVAL[FALSE][ITE]_5, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET][LET]_4, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, RUN_2, EQEXP_2, LOOKNAME_2, LOOKBODY_2, APPLY_3, LOOKVAR_3 Compound Symbols: c_1, c8_3, c9_3, c10_2, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c27_2, c28_1, c29_1, c30_2, c31_3, c32_3, c33_1, c34, c35, c36_3, c37_2, c38_1, c39_2, c40_2, c41_2, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c68_2, c69_2, c70, c71, c72, c73, c74, c75, c76, c77, c78_2, c79_2, c80, c81, c82, c83, c84, c85, c86, c87, c88_2, c89_3, c90_3, c91, c92, c93, c94, c95, c96, c97, c98, c99_3, c100_3, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c174_2, c175_2, c188_2, c189_2 ---------------------------------------- (21) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 22 trailing tuple parts ---------------------------------------- (22) Obligation: Complexity Dependency Tuples Problem Rules: !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True eeval[False][Ite](True, Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval[False][Ite](False, Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T run[Let][Let](z0, z1, z2, z3) -> run[Let](z0, z1, z2, z3, lookname(z2, z0)) run[Let](z0, z1, z2, z3, z4) -> eeval(z3, Cons(z4, Nil), Cons(z1, Nil), z0) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) run(Cons(Fun(z0, z1), z2), z3) -> run[Let][Let](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))) eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) checkConstrExp(Error(z0, z1), Error(z2, z3)) -> True checkConstrExp(Error(z0, z1), F) -> False checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(Error(z0, z1), Fun(z2, z3)) -> False checkConstrExp(Error(z0, z1), Eq(z2, z3)) -> False checkConstrExp(Error(z0, z1), ITE(z2, z3, z4)) -> False checkConstrExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False checkConstrExp(Error(z0, z1), Var(z2)) -> False checkConstrExp(F, Error(z0, z1)) -> False checkConstrExp(F, F) -> True checkConstrExp(F, T) -> False checkConstrExp(F, Fun(z0, z1)) -> False checkConstrExp(F, Eq(z0, z1)) -> False checkConstrExp(F, ITE(z0, z1, z2)) -> False checkConstrExp(F, Bsf(z0, z1, z2)) -> False checkConstrExp(F, Var(z0)) -> False checkConstrExp(T, Error(z0, z1)) -> False checkConstrExp(T, F) -> False checkConstrExp(T, T) -> True checkConstrExp(T, Fun(z0, z1)) -> False checkConstrExp(T, Eq(z0, z1)) -> False checkConstrExp(T, ITE(z0, z1, z2)) -> False checkConstrExp(T, Bsf(z0, z1, z2)) -> False checkConstrExp(T, Var(z0)) -> False checkConstrExp(Fun(z0, z1), Error(z2, z3)) -> False checkConstrExp(Fun(z0, z1), F) -> False checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Fun(z0, z1), Fun(z2, z3)) -> True checkConstrExp(Fun(z0, z1), Eq(z2, z3)) -> False checkConstrExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False checkConstrExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False checkConstrExp(Fun(z0, z1), Var(z2)) -> False checkConstrExp(Eq(z0, z1), Error(z2, z3)) -> False checkConstrExp(Eq(z0, z1), F) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), Fun(z2, z3)) -> False checkConstrExp(Eq(z0, z1), Eq(z2, z3)) -> True checkConstrExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False checkConstrExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False checkConstrExp(Eq(z0, z1), Var(z2)) -> False checkConstrExp(ITE(z0, z1, z2), Error(z3, z4)) -> False checkConstrExp(ITE(z0, z1, z2), F) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False checkConstrExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False checkConstrExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> True checkConstrExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False checkConstrExp(ITE(z0, z1, z2), Var(z3)) -> False checkConstrExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False checkConstrExp(Bsf(z0, z1, z2), F) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False checkConstrExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False checkConstrExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False checkConstrExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> True checkConstrExp(Bsf(z0, z1, z2), Var(z3)) -> False checkConstrExp(Var(z0), Error(z1, z2)) -> False checkConstrExp(Var(z0), F) -> False checkConstrExp(Var(z0), T) -> False checkConstrExp(Var(z0), Fun(z1, z2)) -> False checkConstrExp(Var(z0), Eq(z1, z2)) -> False checkConstrExp(Var(z0), ITE(z1, z2, z3)) -> False checkConstrExp(Var(z0), Bsf(z1, z2, z3)) -> False checkConstrExp(Var(z0), Var(z1)) -> True lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) getVar(Var(z0)) -> z0 getIfTrue(ITE(z0, z1, z2)) -> z1 getIfGuard(ITE(z0, z1, z2)) -> z0 getIfFalse(ITE(z0, z1, z2)) -> z2 getFuncName(Fun(z0, z1)) -> z0 getFuncExp(Fun(z0, z1)) -> z1 getEqSecond(Eq(z0, z1)) -> z1 getEqFirst(Eq(z0, z1)) -> z0 getConst(Cst(z0)) -> z0 getBsfSecondTerm(Bsf(z0, z1, z2)) -> z2 getBsfOp(Bsf(z0, z1, z2)) -> z0 getBsfFirstTerm(Bsf(z0, z1, z2)) -> z1 apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) eqOps(z0, z1) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c10(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET][LET](z0, z1, z2, z3) -> c27(RUN[LET](z0, z1, z2, z3, lookname(z2, z0)), LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) RUN(Cons(Fun(z0, z1), z2), z3) -> c39(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))), LOOKBODY(z0, Cons(Fun(z0, z1), z2))) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) LOOKNAME(z0, Cons(Fun(z1, z2), z3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKBODY(z0, Cons(Fun(z1, z2), z3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c8(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c9(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) RUN(Cons(Fun(z0, z1), z2), z3) -> c39(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))), LOOKBODY(z0, Cons(Fun(z0, z1), z2))) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) LOOKNAME(z0, Cons(Fun(z1, z2), z3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKBODY(z0, Cons(Fun(z1, z2), z3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) K tuples:none Defined Rule Symbols: eeval_4, run_2, eqExp_2, checkConstrExp_2, lookname_2, lookbody_2, getVar_1, getIfTrue_1, getIfGuard_1, getIfFalse_1, getFuncName_1, getFuncExp_1, getEqSecond_1, getEqFirst_1, getConst_1, getBsfSecondTerm_1, getBsfOp_1, getBsfFirstTerm_1, apply_3, lookvar_3, eqOps_2, !EQ_2, and_2, eeval[False][Ite]_5, lookvar[Ite]_4, lookname[Ite]_3, lookbody[Ite]_3, eeval[Ite]_5, eeval[False][Let]_5, eeval[False][Let][Let]_6, eeval[Let]_5, eeval[Let][Let]_6, eeval[True][Ite]_5, apply[Ite]_4, run[Let][Let]_4, run[Let]_5, eeval[Let][Let][Let]_7 Defined Pair Symbols: !EQ'_2, EEVAL[FALSE][ITE]_5, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET][LET]_4, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, RUN_2, EQEXP_2, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, APPLY_3 Compound Symbols: c_1, c10_2, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c27_2, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c39_2, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c174_2, c175_2, c189_2, c8_2, c9_2, c31_2, c32_2, c33, c36_2, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1 ---------------------------------------- (23) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (24) Obligation: Complexity Dependency Tuples Problem Rules: !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True eeval[False][Ite](True, Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval[False][Ite](False, Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T run[Let][Let](z0, z1, z2, z3) -> run[Let](z0, z1, z2, z3, lookname(z2, z0)) run[Let](z0, z1, z2, z3, z4) -> eeval(z3, Cons(z4, Nil), Cons(z1, Nil), z0) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) run(Cons(Fun(z0, z1), z2), z3) -> run[Let][Let](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))) eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) checkConstrExp(Error(z0, z1), Error(z2, z3)) -> True checkConstrExp(Error(z0, z1), F) -> False checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(Error(z0, z1), Fun(z2, z3)) -> False checkConstrExp(Error(z0, z1), Eq(z2, z3)) -> False checkConstrExp(Error(z0, z1), ITE(z2, z3, z4)) -> False checkConstrExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False checkConstrExp(Error(z0, z1), Var(z2)) -> False checkConstrExp(F, Error(z0, z1)) -> False checkConstrExp(F, F) -> True checkConstrExp(F, T) -> False checkConstrExp(F, Fun(z0, z1)) -> False checkConstrExp(F, Eq(z0, z1)) -> False checkConstrExp(F, ITE(z0, z1, z2)) -> False checkConstrExp(F, Bsf(z0, z1, z2)) -> False checkConstrExp(F, Var(z0)) -> False checkConstrExp(T, Error(z0, z1)) -> False checkConstrExp(T, F) -> False checkConstrExp(T, T) -> True checkConstrExp(T, Fun(z0, z1)) -> False checkConstrExp(T, Eq(z0, z1)) -> False checkConstrExp(T, ITE(z0, z1, z2)) -> False checkConstrExp(T, Bsf(z0, z1, z2)) -> False checkConstrExp(T, Var(z0)) -> False checkConstrExp(Fun(z0, z1), Error(z2, z3)) -> False checkConstrExp(Fun(z0, z1), F) -> False checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Fun(z0, z1), Fun(z2, z3)) -> True checkConstrExp(Fun(z0, z1), Eq(z2, z3)) -> False checkConstrExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False checkConstrExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False checkConstrExp(Fun(z0, z1), Var(z2)) -> False checkConstrExp(Eq(z0, z1), Error(z2, z3)) -> False checkConstrExp(Eq(z0, z1), F) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), Fun(z2, z3)) -> False checkConstrExp(Eq(z0, z1), Eq(z2, z3)) -> True checkConstrExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False checkConstrExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False checkConstrExp(Eq(z0, z1), Var(z2)) -> False checkConstrExp(ITE(z0, z1, z2), Error(z3, z4)) -> False checkConstrExp(ITE(z0, z1, z2), F) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False checkConstrExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False checkConstrExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> True checkConstrExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False checkConstrExp(ITE(z0, z1, z2), Var(z3)) -> False checkConstrExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False checkConstrExp(Bsf(z0, z1, z2), F) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False checkConstrExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False checkConstrExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False checkConstrExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> True checkConstrExp(Bsf(z0, z1, z2), Var(z3)) -> False checkConstrExp(Var(z0), Error(z1, z2)) -> False checkConstrExp(Var(z0), F) -> False checkConstrExp(Var(z0), T) -> False checkConstrExp(Var(z0), Fun(z1, z2)) -> False checkConstrExp(Var(z0), Eq(z1, z2)) -> False checkConstrExp(Var(z0), ITE(z1, z2, z3)) -> False checkConstrExp(Var(z0), Bsf(z1, z2, z3)) -> False checkConstrExp(Var(z0), Var(z1)) -> True lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) getVar(Var(z0)) -> z0 getIfTrue(ITE(z0, z1, z2)) -> z1 getIfGuard(ITE(z0, z1, z2)) -> z0 getIfFalse(ITE(z0, z1, z2)) -> z2 getFuncName(Fun(z0, z1)) -> z0 getFuncExp(Fun(z0, z1)) -> z1 getEqSecond(Eq(z0, z1)) -> z1 getEqFirst(Eq(z0, z1)) -> z0 getConst(Cst(z0)) -> z0 getBsfSecondTerm(Bsf(z0, z1, z2)) -> z2 getBsfOp(Bsf(z0, z1, z2)) -> z0 getBsfFirstTerm(Bsf(z0, z1, z2)) -> z1 apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) eqOps(z0, z1) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) LOOKNAME(z0, Cons(Fun(z1, z2), z3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKBODY(z0, Cons(Fun(z1, z2), z3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(LOOKBODY(z0, z4)) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) 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)))) RUN(Cons(Fun(z0, z1), z2), z3) -> c1(LOOKBODY(z0, Cons(Fun(z0, z1), z2))) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EEVAL(z0, z2, z3, z4)) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EEVAL(z1, z2, z3, z4)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) LOOKNAME(z0, Cons(Fun(z1, z2), z3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKBODY(z0, Cons(Fun(z1, z2), z3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) 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)))) RUN(Cons(Fun(z0, z1), z2), z3) -> c1(LOOKBODY(z0, Cons(Fun(z0, z1), z2))) K tuples:none Defined Rule Symbols: eeval_4, run_2, eqExp_2, checkConstrExp_2, lookname_2, lookbody_2, getVar_1, getIfTrue_1, getIfGuard_1, getIfFalse_1, getFuncName_1, getFuncExp_1, getEqSecond_1, getEqFirst_1, getConst_1, getBsfSecondTerm_1, getBsfOp_1, getBsfFirstTerm_1, apply_3, lookvar_3, eqOps_2, !EQ_2, and_2, eeval[False][Ite]_5, lookvar[Ite]_4, lookname[Ite]_3, lookbody[Ite]_3, eeval[Ite]_5, eeval[False][Let]_5, eeval[False][Let][Let]_6, eeval[Let]_5, eeval[Let][Let]_6, eeval[True][Ite]_5, apply[Ite]_4, run[Let][Let]_4, run[Let]_5, eeval[Let][Let][Let]_7 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c174_2, c175_2, c189_2, c31_2, c32_2, c33, c36_2, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1 ---------------------------------------- (25) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 4 leading nodes: EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EEVAL(z0, z2, z3, z4)) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EEVAL(z1, z2, z3, z4)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(LOOKBODY(z0, z4)) RUN(Cons(Fun(z0, z1), z2), z3) -> c1(LOOKBODY(z0, Cons(Fun(z0, z1), z2))) ---------------------------------------- (26) Obligation: Complexity Dependency Tuples Problem Rules: !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True eeval[False][Ite](True, Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval[False][Ite](False, Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T run[Let][Let](z0, z1, z2, z3) -> run[Let](z0, z1, z2, z3, lookname(z2, z0)) run[Let](z0, z1, z2, z3, z4) -> eeval(z3, Cons(z4, Nil), Cons(z1, Nil), z0) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) run(Cons(Fun(z0, z1), z2), z3) -> run[Let][Let](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))) eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) checkConstrExp(Error(z0, z1), Error(z2, z3)) -> True checkConstrExp(Error(z0, z1), F) -> False checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(Error(z0, z1), Fun(z2, z3)) -> False checkConstrExp(Error(z0, z1), Eq(z2, z3)) -> False checkConstrExp(Error(z0, z1), ITE(z2, z3, z4)) -> False checkConstrExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False checkConstrExp(Error(z0, z1), Var(z2)) -> False checkConstrExp(F, Error(z0, z1)) -> False checkConstrExp(F, F) -> True checkConstrExp(F, T) -> False checkConstrExp(F, Fun(z0, z1)) -> False checkConstrExp(F, Eq(z0, z1)) -> False checkConstrExp(F, ITE(z0, z1, z2)) -> False checkConstrExp(F, Bsf(z0, z1, z2)) -> False checkConstrExp(F, Var(z0)) -> False checkConstrExp(T, Error(z0, z1)) -> False checkConstrExp(T, F) -> False checkConstrExp(T, T) -> True checkConstrExp(T, Fun(z0, z1)) -> False checkConstrExp(T, Eq(z0, z1)) -> False checkConstrExp(T, ITE(z0, z1, z2)) -> False checkConstrExp(T, Bsf(z0, z1, z2)) -> False checkConstrExp(T, Var(z0)) -> False checkConstrExp(Fun(z0, z1), Error(z2, z3)) -> False checkConstrExp(Fun(z0, z1), F) -> False checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Fun(z0, z1), Fun(z2, z3)) -> True checkConstrExp(Fun(z0, z1), Eq(z2, z3)) -> False checkConstrExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False checkConstrExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False checkConstrExp(Fun(z0, z1), Var(z2)) -> False checkConstrExp(Eq(z0, z1), Error(z2, z3)) -> False checkConstrExp(Eq(z0, z1), F) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), Fun(z2, z3)) -> False checkConstrExp(Eq(z0, z1), Eq(z2, z3)) -> True checkConstrExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False checkConstrExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False checkConstrExp(Eq(z0, z1), Var(z2)) -> False checkConstrExp(ITE(z0, z1, z2), Error(z3, z4)) -> False checkConstrExp(ITE(z0, z1, z2), F) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False checkConstrExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False checkConstrExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> True checkConstrExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False checkConstrExp(ITE(z0, z1, z2), Var(z3)) -> False checkConstrExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False checkConstrExp(Bsf(z0, z1, z2), F) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False checkConstrExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False checkConstrExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False checkConstrExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> True checkConstrExp(Bsf(z0, z1, z2), Var(z3)) -> False checkConstrExp(Var(z0), Error(z1, z2)) -> False checkConstrExp(Var(z0), F) -> False checkConstrExp(Var(z0), T) -> False checkConstrExp(Var(z0), Fun(z1, z2)) -> False checkConstrExp(Var(z0), Eq(z1, z2)) -> False checkConstrExp(Var(z0), ITE(z1, z2, z3)) -> False checkConstrExp(Var(z0), Bsf(z1, z2, z3)) -> False checkConstrExp(Var(z0), Var(z1)) -> True lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) getVar(Var(z0)) -> z0 getIfTrue(ITE(z0, z1, z2)) -> z1 getIfGuard(ITE(z0, z1, z2)) -> z0 getIfFalse(ITE(z0, z1, z2)) -> z2 getFuncName(Fun(z0, z1)) -> z0 getFuncExp(Fun(z0, z1)) -> z1 getEqSecond(Eq(z0, z1)) -> z1 getEqFirst(Eq(z0, z1)) -> z0 getConst(Cst(z0)) -> z0 getBsfSecondTerm(Bsf(z0, z1, z2)) -> z2 getBsfOp(Bsf(z0, z1, z2)) -> z0 getBsfFirstTerm(Bsf(z0, z1, z2)) -> z1 apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) eqOps(z0, z1) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) LOOKNAME(z0, Cons(Fun(z1, z2), z3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKBODY(z0, Cons(Fun(z1, z2), z3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) 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)))) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4))) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) LOOKNAME(z0, Cons(Fun(z1, z2), z3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKBODY(z0, Cons(Fun(z1, z2), z3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) 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_4, run_2, eqExp_2, checkConstrExp_2, lookname_2, lookbody_2, getVar_1, getIfTrue_1, getIfGuard_1, getIfFalse_1, getFuncName_1, getFuncExp_1, getEqSecond_1, getEqFirst_1, getConst_1, getBsfSecondTerm_1, getBsfOp_1, getBsfFirstTerm_1, apply_3, lookvar_3, eqOps_2, !EQ_2, and_2, eeval[False][Ite]_5, lookvar[Ite]_4, lookname[Ite]_3, lookbody[Ite]_3, eeval[Ite]_5, eeval[False][Let]_5, eeval[False][Let][Let]_6, eeval[Let]_5, eeval[Let][Let]_6, eeval[True][Ite]_5, apply[Ite]_4, run[Let][Let]_4, run[Let]_5, eeval[Let][Let][Let]_7 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c174_2, c175_2, c189_2, c31_2, c32_2, c33, c36_2, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1 ---------------------------------------- (27) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) 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)))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) ---------------------------------------- (28) Obligation: Complexity Dependency Tuples Problem Rules: !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True eeval[False][Ite](True, Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval[False][Ite](False, Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T run[Let][Let](z0, z1, z2, z3) -> run[Let](z0, z1, z2, z3, lookname(z2, z0)) run[Let](z0, z1, z2, z3, z4) -> eeval(z3, Cons(z4, Nil), Cons(z1, Nil), z0) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) run(Cons(Fun(z0, z1), z2), z3) -> run[Let][Let](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))) eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) checkConstrExp(Error(z0, z1), Error(z2, z3)) -> True checkConstrExp(Error(z0, z1), F) -> False checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(Error(z0, z1), Fun(z2, z3)) -> False checkConstrExp(Error(z0, z1), Eq(z2, z3)) -> False checkConstrExp(Error(z0, z1), ITE(z2, z3, z4)) -> False checkConstrExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False checkConstrExp(Error(z0, z1), Var(z2)) -> False checkConstrExp(F, Error(z0, z1)) -> False checkConstrExp(F, F) -> True checkConstrExp(F, T) -> False checkConstrExp(F, Fun(z0, z1)) -> False checkConstrExp(F, Eq(z0, z1)) -> False checkConstrExp(F, ITE(z0, z1, z2)) -> False checkConstrExp(F, Bsf(z0, z1, z2)) -> False checkConstrExp(F, Var(z0)) -> False checkConstrExp(T, Error(z0, z1)) -> False checkConstrExp(T, F) -> False checkConstrExp(T, T) -> True checkConstrExp(T, Fun(z0, z1)) -> False checkConstrExp(T, Eq(z0, z1)) -> False checkConstrExp(T, ITE(z0, z1, z2)) -> False checkConstrExp(T, Bsf(z0, z1, z2)) -> False checkConstrExp(T, Var(z0)) -> False checkConstrExp(Fun(z0, z1), Error(z2, z3)) -> False checkConstrExp(Fun(z0, z1), F) -> False checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Fun(z0, z1), Fun(z2, z3)) -> True checkConstrExp(Fun(z0, z1), Eq(z2, z3)) -> False checkConstrExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False checkConstrExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False checkConstrExp(Fun(z0, z1), Var(z2)) -> False checkConstrExp(Eq(z0, z1), Error(z2, z3)) -> False checkConstrExp(Eq(z0, z1), F) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), Fun(z2, z3)) -> False checkConstrExp(Eq(z0, z1), Eq(z2, z3)) -> True checkConstrExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False checkConstrExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False checkConstrExp(Eq(z0, z1), Var(z2)) -> False checkConstrExp(ITE(z0, z1, z2), Error(z3, z4)) -> False checkConstrExp(ITE(z0, z1, z2), F) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False checkConstrExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False checkConstrExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> True checkConstrExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False checkConstrExp(ITE(z0, z1, z2), Var(z3)) -> False checkConstrExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False checkConstrExp(Bsf(z0, z1, z2), F) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False checkConstrExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False checkConstrExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False checkConstrExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> True checkConstrExp(Bsf(z0, z1, z2), Var(z3)) -> False checkConstrExp(Var(z0), Error(z1, z2)) -> False checkConstrExp(Var(z0), F) -> False checkConstrExp(Var(z0), T) -> False checkConstrExp(Var(z0), Fun(z1, z2)) -> False checkConstrExp(Var(z0), Eq(z1, z2)) -> False checkConstrExp(Var(z0), ITE(z1, z2, z3)) -> False checkConstrExp(Var(z0), Bsf(z1, z2, z3)) -> False checkConstrExp(Var(z0), Var(z1)) -> True lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) getVar(Var(z0)) -> z0 getIfTrue(ITE(z0, z1, z2)) -> z1 getIfGuard(ITE(z0, z1, z2)) -> z0 getIfFalse(ITE(z0, z1, z2)) -> z2 getFuncName(Fun(z0, z1)) -> z0 getFuncExp(Fun(z0, z1)) -> z1 getEqSecond(Eq(z0, z1)) -> z1 getEqFirst(Eq(z0, z1)) -> z0 getConst(Cst(z0)) -> z0 getBsfSecondTerm(Bsf(z0, z1, z2)) -> z2 getBsfOp(Bsf(z0, z1, z2)) -> z0 getBsfFirstTerm(Bsf(z0, z1, z2)) -> z1 apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) eqOps(z0, z1) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) LOOKNAME(z0, Cons(Fun(z1, z2), z3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKBODY(z0, Cons(Fun(z1, z2), z3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) 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)))) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4))) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) LOOKNAME(z0, Cons(Fun(z1, z2), z3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKBODY(z0, Cons(Fun(z1, z2), z3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) 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)))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: eeval_4, run_2, eqExp_2, checkConstrExp_2, lookname_2, lookbody_2, getVar_1, getIfTrue_1, getIfGuard_1, getIfFalse_1, getFuncName_1, getFuncExp_1, getEqSecond_1, getEqFirst_1, getConst_1, getBsfSecondTerm_1, getBsfOp_1, getBsfFirstTerm_1, apply_3, lookvar_3, eqOps_2, !EQ_2, and_2, eeval[False][Ite]_5, lookvar[Ite]_4, lookname[Ite]_3, lookbody[Ite]_3, eeval[Ite]_5, eeval[False][Let]_5, eeval[False][Let][Let]_6, eeval[Let]_5, eeval[Let][Let]_6, eeval[True][Ite]_5, apply[Ite]_4, run[Let][Let]_4, run[Let]_5, eeval[Let][Let][Let]_7 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c174_2, c175_2, c189_2, c31_2, c32_2, c33, c36_2, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1 ---------------------------------------- (29) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: eeval[False][Ite](True, Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval[False][Ite](False, Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) run[Let][Let](z0, z1, z2, z3) -> run[Let](z0, z1, z2, z3, lookname(z2, z0)) run[Let](z0, z1, z2, z3, z4) -> eeval(z3, Cons(z4, Nil), Cons(z1, Nil), z0) run(Cons(Fun(z0, z1), z2), z3) -> run[Let][Let](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))) checkConstrExp(Error(z0, z1), Error(z2, z3)) -> True checkConstrExp(Error(z0, z1), F) -> False checkConstrExp(Error(z0, z1), Fun(z2, z3)) -> False checkConstrExp(Error(z0, z1), Eq(z2, z3)) -> False checkConstrExp(Error(z0, z1), ITE(z2, z3, z4)) -> False checkConstrExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False checkConstrExp(Error(z0, z1), Var(z2)) -> False checkConstrExp(F, Error(z0, z1)) -> False checkConstrExp(F, F) -> True checkConstrExp(F, Fun(z0, z1)) -> False checkConstrExp(F, Eq(z0, z1)) -> False checkConstrExp(F, ITE(z0, z1, z2)) -> False checkConstrExp(F, Bsf(z0, z1, z2)) -> False checkConstrExp(F, Var(z0)) -> False checkConstrExp(T, Error(z0, z1)) -> False checkConstrExp(T, F) -> False checkConstrExp(T, Fun(z0, z1)) -> False checkConstrExp(T, Eq(z0, z1)) -> False checkConstrExp(T, ITE(z0, z1, z2)) -> False checkConstrExp(T, Bsf(z0, z1, z2)) -> False checkConstrExp(T, Var(z0)) -> False checkConstrExp(Fun(z0, z1), Error(z2, z3)) -> False checkConstrExp(Fun(z0, z1), F) -> False checkConstrExp(Fun(z0, z1), Fun(z2, z3)) -> True checkConstrExp(Fun(z0, z1), Eq(z2, z3)) -> False checkConstrExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False checkConstrExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False checkConstrExp(Fun(z0, z1), Var(z2)) -> False checkConstrExp(Eq(z0, z1), Error(z2, z3)) -> False checkConstrExp(Eq(z0, z1), F) -> False checkConstrExp(Eq(z0, z1), Fun(z2, z3)) -> False checkConstrExp(Eq(z0, z1), Eq(z2, z3)) -> True checkConstrExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False checkConstrExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False checkConstrExp(Eq(z0, z1), Var(z2)) -> False checkConstrExp(ITE(z0, z1, z2), Error(z3, z4)) -> False checkConstrExp(ITE(z0, z1, z2), F) -> False checkConstrExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False checkConstrExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False checkConstrExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> True checkConstrExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False checkConstrExp(ITE(z0, z1, z2), Var(z3)) -> False checkConstrExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False checkConstrExp(Bsf(z0, z1, z2), F) -> False checkConstrExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False checkConstrExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False checkConstrExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False checkConstrExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> True checkConstrExp(Bsf(z0, z1, z2), Var(z3)) -> False checkConstrExp(Var(z0), Error(z1, z2)) -> False checkConstrExp(Var(z0), F) -> False checkConstrExp(Var(z0), Fun(z1, z2)) -> False checkConstrExp(Var(z0), Eq(z1, z2)) -> False checkConstrExp(Var(z0), ITE(z1, z2, z3)) -> False checkConstrExp(Var(z0), Bsf(z1, z2, z3)) -> False checkConstrExp(Var(z0), Var(z1)) -> True getVar(Var(z0)) -> z0 getIfTrue(ITE(z0, z1, z2)) -> z1 getIfGuard(ITE(z0, z1, z2)) -> z0 getIfFalse(ITE(z0, z1, z2)) -> z2 getFuncName(Fun(z0, z1)) -> z0 getFuncExp(Fun(z0, z1)) -> z1 getEqSecond(Eq(z0, z1)) -> z1 getEqFirst(Eq(z0, z1)) -> z0 getConst(Cst(z0)) -> z0 getBsfSecondTerm(Bsf(z0, z1, z2)) -> z2 getBsfOp(Bsf(z0, z1, z2)) -> z0 getBsfFirstTerm(Bsf(z0, z1, z2)) -> z1 eqOps(z0, z1) -> True ---------------------------------------- (30) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) LOOKNAME(z0, Cons(Fun(z1, z2), z3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKBODY(z0, Cons(Fun(z1, z2), z3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) 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)))) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4))) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) LOOKNAME(z0, Cons(Fun(z1, z2), z3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKBODY(z0, Cons(Fun(z1, z2), z3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) 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)))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c174_2, c175_2, c189_2, c31_2, c32_2, c33, c36_2, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1 ---------------------------------------- (31) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace LOOKNAME(z0, Cons(Fun(z1, z2), z3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) by LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3)), !EQ'(0, S(z0))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3)), !EQ'(S(z0), 0)) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](True, 0, Cons(Fun(0, x2), x3)), !EQ'(0, 0)) ---------------------------------------- (32) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) LOOKBODY(z0, Cons(Fun(z1, z2), z3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) 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)))) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4))) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3)), !EQ'(0, S(z0))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3)), !EQ'(S(z0), 0)) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](True, 0, Cons(Fun(0, x2), x3)), !EQ'(0, 0)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) LOOKBODY(z0, Cons(Fun(z1, z2), z3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3)), !EQ'(0, S(z0))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3)), !EQ'(S(z0), 0)) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](True, 0, Cons(Fun(0, x2), x3)), !EQ'(0, 0)) 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)))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, LOOKBODY_2, LOOKVAR_3, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, RUN_2, LOOKNAME_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c175_2, c189_2, c31_2, c32_2, c33, c36_2, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_2 ---------------------------------------- (33) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 4 trailing tuple parts ---------------------------------------- (34) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) LOOKBODY(z0, Cons(Fun(z1, z2), z3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) 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)))) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4))) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) LOOKBODY(z0, Cons(Fun(z1, z2), z3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 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)))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, LOOKBODY_2, LOOKVAR_3, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, RUN_2, LOOKNAME_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c175_2, c189_2, c31_2, c32_2, c33, c36_2, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_2, c174_1, c174 ---------------------------------------- (35) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace LOOKBODY(z0, Cons(Fun(z1, z2), z3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) by LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3)), !EQ'(0, S(z0))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3)), !EQ'(S(z0), 0)) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](True, 0, Cons(Fun(0, x2), x3)), !EQ'(0, 0)) ---------------------------------------- (36) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) 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)))) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4))) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3)), !EQ'(0, S(z0))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3)), !EQ'(S(z0), 0)) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](True, 0, Cons(Fun(0, x2), x3)), !EQ'(0, 0)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3)), !EQ'(0, S(z0))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3)), !EQ'(S(z0), 0)) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](True, 0, Cons(Fun(0, x2), x3)), !EQ'(0, 0)) 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)))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, LOOKVAR_3, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, RUN_2, LOOKNAME_2, LOOKBODY_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c189_2, c31_2, c32_2, c33, c36_2, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_2, c174_1, c174, c175_2 ---------------------------------------- (37) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 4 trailing tuple parts ---------------------------------------- (38) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) 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)))) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4))) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 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)))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, LOOKVAR_3, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, RUN_2, LOOKNAME_2, LOOKBODY_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c189_2, c31_2, c32_2, c33, c36_2, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_2, c174_1, c174, c175_2, c175_1, c175 ---------------------------------------- (39) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) by LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3), !EQ'(0, S(z0))) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3), !EQ'(S(z0), 0)) LOOKVAR(0, Cons(0, x2), x3) -> c189(LOOKVAR[ITE](True, 0, Cons(0, x2), x3), !EQ'(0, 0)) ---------------------------------------- (40) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) 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)))) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4))) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3), !EQ'(0, S(z0))) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3), !EQ'(S(z0), 0)) LOOKVAR(0, Cons(0, x2), x3) -> c189(LOOKVAR[ITE](True, 0, Cons(0, x2), x3), !EQ'(0, 0)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3), !EQ'(0, S(z0))) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3), !EQ'(S(z0), 0)) LOOKVAR(0, Cons(0, x2), x3) -> c189(LOOKVAR[ITE](True, 0, Cons(0, x2), x3), !EQ'(0, 0)) 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)))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, RUN_2, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c31_2, c32_2, c33, c36_2, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_2, c174_1, c174, c175_2, c175_1, c175, c189_2 ---------------------------------------- (41) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 4 trailing tuple parts ---------------------------------------- (42) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) 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)))) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4))) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 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)))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, RUN_2, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c31_2, c32_2, c33, c36_2, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_2, c174_1, c174, c175_2, c175_1, c175, c189_2, c189_1, c189 ---------------------------------------- (43) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) by EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c31(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c31(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(Var(z0), z1, z2, z3)) ---------------------------------------- (44) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) 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)))) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4))) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c31(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c31(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(Var(z0), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c31(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c31(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(Var(z0), z1, z2, 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)))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, RUN_2, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c32_2, c33, c36_2, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_2, c174_1, c174, c175_2, c175_1, c175, c189_2, c189_1, c189, c31_2 ---------------------------------------- (45) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (46) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) 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)))) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4))) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c31(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c31(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c31(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c31(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) 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)))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, RUN_2, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c32_2, c33, c36_2, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_2, c174_1, c174, c175_2, c175_1, c175, c189_2, c189_1, c189, c31_2, c31_1 ---------------------------------------- (47) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (48) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) 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)))) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4))) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, 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)))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, RUN_2, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c32_2, c33, c36_2, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_2, c174_1, c174, c175_2, c175_1, c175, c189_2, c189_1, c189, c31_2, c31_1, c2_1 ---------------------------------------- (49) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) by EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) ---------------------------------------- (50) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) 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)))) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4))) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, 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)))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, RUN_2, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c36_2, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_2, c174_1, c174, c175_2, c175_1, c175, c189_2, c189_1, c189, c31_2, c31_1, c2_1, c32_2 ---------------------------------------- (51) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (52) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) 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)))) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4))) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) 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)))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, RUN_2, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c36_2, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_2, c174_1, c174, c175_2, c175_1, c175, c189_2, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1 ---------------------------------------- (53) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (54) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) 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)))) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4))) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, 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)))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, RUN_2, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c36_2, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_2, c174_1, c174, c175_2, c175_1, c175, c189_2, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1 ---------------------------------------- (55) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(ITE(z0, z1, z2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), EEVAL(z0, z3, z4, z5)) by EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), T), ITE(Error(z0, z1), x1, x2), z2, z3, z4), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) ---------------------------------------- (56) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) 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)))) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4))) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), T), ITE(Error(z0, z1), x1, x2), z2, z3, z4), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), T), ITE(Error(z0, z1), x1, x2), z2, z3, z4), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, 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)))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, RUN_2, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_2, c174_1, c174, c175_2, c175_1, c175, c189_2, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2 ---------------------------------------- (57) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (58) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) 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)))) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4))) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) 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)))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, RUN_2, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_2, c174_1, c174, c175_2, c175_1, c175, c189_2, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1 ---------------------------------------- (59) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace 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)))) by RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) ---------------------------------------- (60) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4))) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) 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)))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_2, c174_1, c174, c175_2, c175_1, c175, c189_2, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1 ---------------------------------------- (61) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4))) by EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, Error(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Error(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) ---------------------------------------- (62) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, Error(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Error(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) 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)))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_2, c174_1, c174, c175_2, c175_1, c175, c189_2, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1 ---------------------------------------- (63) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing nodes: EEVAL[FALSE][ITE](True, Eq(Error(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, Error(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))) ---------------------------------------- (64) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_2, c174_1, c174, c175_2, c175_1, c175, c189_2, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1 ---------------------------------------- (65) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace LOOKNAME(S(z0), Cons(Fun(S(z1), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) by LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](True, S(0), Cons(Fun(S(0), x2), x3)), !EQ'(S(0), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) ---------------------------------------- (66) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](True, S(0), Cons(Fun(S(0), x2), x3)), !EQ'(S(0), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](True, S(0), Cons(Fun(S(0), x2), x3)), !EQ'(S(0), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_2, c175_1, c175, c189_2, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2 ---------------------------------------- (67) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (68) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_2, c175_1, c175, c189_2, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2 ---------------------------------------- (69) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace LOOKBODY(S(z0), Cons(Fun(S(z1), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(z0), Cons(Fun(S(z1), x2), x3)), !EQ'(S(z0), S(z1))) by LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](True, S(0), Cons(Fun(S(0), x2), x3)), !EQ'(S(0), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) ---------------------------------------- (70) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](True, S(0), Cons(Fun(S(0), x2), x3)), !EQ'(S(0), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](True, S(0), Cons(Fun(S(0), x2), x3)), !EQ'(S(0), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_2, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2 ---------------------------------------- (71) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (72) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_2, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2 ---------------------------------------- (73) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace LOOKVAR(S(z0), Cons(S(z1), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(z0), Cons(S(z1), x2), x3), !EQ'(S(z0), S(z1))) by LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](True, S(0), Cons(S(0), x2), x3), !EQ'(S(0), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) ---------------------------------------- (74) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](True, S(0), Cons(S(0), x2), x3), !EQ'(S(0), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](True, S(0), Cons(S(0), x2), x3), !EQ'(S(0), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2 ---------------------------------------- (75) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (76) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2 ---------------------------------------- (77) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(x0, z2, z3, z4)) by EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c31(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c31(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Var(z0), z1, z2, z3)) ---------------------------------------- (78) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c31(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c31(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Var(z0), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c31(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c31(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Var(z0), z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2 ---------------------------------------- (79) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (80) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c31(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c31(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c31(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c31(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2 ---------------------------------------- (81) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (82) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c4_1 ---------------------------------------- (83) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) by EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), Eq(x1, Error(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Error(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c31(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c31(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Var(z0), z1, z2, z3)) ---------------------------------------- (84) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), Eq(x1, Error(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Error(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c31(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c31(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Var(z0), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), Eq(x1, Error(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Error(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c31(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c31(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Var(z0), z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c4_1 ---------------------------------------- (85) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing tuple parts ---------------------------------------- (86) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c31(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c31(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c31(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c31(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c4_1 ---------------------------------------- (87) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (88) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c4_1, c5_1 ---------------------------------------- (89) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(Eq(x0, F), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), F), EEVAL(x0, z0, z1, z2)) by EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), F), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c31(EQEXP(F, F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c31(EQEXP(T, F), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), F), EEVAL(Var(z0), z1, z2, z3)) ---------------------------------------- (90) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), F), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c31(EQEXP(F, F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c31(EQEXP(T, F), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), F), EEVAL(Var(z0), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), F), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c31(EQEXP(F, F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c31(EQEXP(T, F), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), F), EEVAL(Var(z0), z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c4_1, c5_1 ---------------------------------------- (91) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (92) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c31(EQEXP(F, F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c31(EQEXP(T, F), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), F), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c31(EQEXP(F, F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c31(EQEXP(T, F), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), F), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c4_1, c5_1 ---------------------------------------- (93) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (94) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c4_1, c5_1, c6_1 ---------------------------------------- (95) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(Eq(x0, T), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), T), EEVAL(x0, z0, z1, z2)) by EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), T), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c31(EQEXP(F, T), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c31(EQEXP(T, T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), T), EEVAL(Var(z0), z1, z2, z3)) ---------------------------------------- (96) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), T), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c31(EQEXP(F, T), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c31(EQEXP(T, T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), T), EEVAL(Var(z0), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), T), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c31(EQEXP(F, T), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c31(EQEXP(T, T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), T), EEVAL(Var(z0), z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c4_1, c5_1, c6_1 ---------------------------------------- (97) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (98) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c31(EQEXP(F, T), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c31(EQEXP(T, T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), T), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c31(EQEXP(F, T), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c31(EQEXP(T, T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), T), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c4_1, c5_1, c6_1 ---------------------------------------- (99) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (100) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c4_1, c5_1, c6_1, c7_1 ---------------------------------------- (101) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) by EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), T), ITE(Error(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c31(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c31(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(Var(z0), z1, z2, z3)) ---------------------------------------- (102) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), T), ITE(Error(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c31(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c31(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(Var(z0), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), T), ITE(Error(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c31(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c31(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(Var(z0), z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c4_1, c5_1, c6_1, c7_1 ---------------------------------------- (103) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (104) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c31(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c31(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c31(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c31(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c4_1, c5_1, c6_1, c7_1 ---------------------------------------- (105) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (106) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c4_1, c5_1, c6_1, c7_1, c8_1 ---------------------------------------- (107) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) by EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c31(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c31(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Var(z0), z1, z2, z3)) ---------------------------------------- (108) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c31(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c31(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Var(z0), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c31(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c31(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Var(z0), z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c4_1, c5_1, c6_1, c7_1, c8_1 ---------------------------------------- (109) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (110) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c31(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c31(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c31(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c31(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c4_1, c5_1, c6_1, c7_1, c8_1 ---------------------------------------- (111) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (112) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1 ---------------------------------------- (113) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(x0, z1, z2, z3)) by EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c31(EQEXP(F, lookvar(x1, z0, z1)), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c31(EQEXP(T, lookvar(x1, z0, z1)), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) ---------------------------------------- (114) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c31(EQEXP(F, lookvar(x1, z0, z1)), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c31(EQEXP(T, lookvar(x1, z0, z1)), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c31(EQEXP(F, lookvar(x1, z0, z1)), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c31(EQEXP(T, lookvar(x1, z0, z1)), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1 ---------------------------------------- (115) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (116) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c31(EQEXP(F, lookvar(x1, z0, z1)), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c31(EQEXP(T, lookvar(x1, z0, z1)), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c31(EQEXP(F, lookvar(x1, z0, z1)), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c31(EQEXP(T, lookvar(x1, z0, z1)), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c31(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1 ---------------------------------------- (117) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (118) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1 ---------------------------------------- (119) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) by EEVAL(Eq(Fun(x0, x1), Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(x0, x1), z2, z3, z4, lookbody(x0, z4)), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(x0, x1), z2, z3, z4, lookbody(x0, z4)), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(x0, x1), z2, z3, z4, lookbody(x0, z4)), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c31(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F), EEVAL(Fun(x0, x1), z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c31(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T), EEVAL(Fun(x0, x1), z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval[False][Let](Fun(x0, x1), z3, z4, z5, lookbody(x0, z5)), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(Fun(x0, x1), z3, z4, z5)) EEVAL(Eq(Fun(x0, x1), Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval[False][Let](Fun(x0, x1), z3, z4, z5, lookbody(x0, z5)), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Fun(x0, x1), z3, z4, z5)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2)), EEVAL(Fun(x0, x1), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) ---------------------------------------- (120) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(x0, x1), z2, z3, z4, lookbody(x0, z4)), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(x0, x1), z2, z3, z4, lookbody(x0, z4)), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1 ---------------------------------------- (121) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (122) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1 ---------------------------------------- (123) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) by EEVAL(Eq(Eq(x0, x1), Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(x0, x1), z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(x0, x1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(x0, x1), z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F), EEVAL(Eq(x0, x1), z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T), EEVAL(Eq(x0, x1), z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(x0, x1), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(Eq(x0, x1), z3, z4, z5)) EEVAL(Eq(Eq(x0, x1), Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(x0, x1), z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Eq(x0, x1), z3, z4, z5)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(Eq(x0, x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), Eq(x0, Error(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Error(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) ---------------------------------------- (124) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(x0, x1), z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), Eq(x0, Error(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Error(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(x0, x1), z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), Eq(x0, Error(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Error(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1 ---------------------------------------- (125) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing tuple parts ---------------------------------------- (126) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1 ---------------------------------------- (127) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) by EEVAL(Eq(ITE(x0, x1, x2), Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z2, z3, z4), T), ITE(x0, x1, x2), z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(x0, x1, x2), Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z2, z3, z4), T), ITE(x0, x1, x2), z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z2, z3, z4), T), ITE(x0, x1, x2), z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(x0, x1, x2), F), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z0, z1, z2), T), ITE(x0, x1, x2), z0, z1, z2), F), EEVAL(ITE(x0, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(x0, x1, x2), T), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z0, z1, z2), T), ITE(x0, x1, x2), z0, z1, z2), T), EEVAL(ITE(x0, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(x0, x1, x2), ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z3, z4, z5), T), ITE(x0, x1, x2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(x0, x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(x0, x1, x2), Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z3, z4, z5), T), ITE(x0, x1, x2), z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(ITE(x0, x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(x0, x1, x2), Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z1, z2, z3), T), ITE(x0, x1, x2), z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(ITE(x0, x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), T), ITE(Error(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) ---------------------------------------- (128) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z2, z3, z4), T), ITE(x0, x1, x2), z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), T), ITE(Error(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z2, z3, z4), T), ITE(x0, x1, x2), z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), T), ITE(Error(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1 ---------------------------------------- (129) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (130) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_2, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1 ---------------------------------------- (131) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) by EEVAL(Eq(Bsf(x0, x1, x2), Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, x1, x2), z2, z3, z4, eeval(x1, z2, z3, z4)), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, x1, x2), Eq(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, x1, x2), z2, z3, z4, eeval(x1, z2, z3, z4)), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, x1, x2), z2, z3, z4, eeval(x1, z2, z3, z4)), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, x1, x2), F), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, x1, x2), z0, z1, z2, eeval(x1, z0, z1, z2)), F), EEVAL(Bsf(x0, x1, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, x1, x2), T), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, x1, x2), z0, z1, z2, eeval(x1, z0, z1, z2)), T), EEVAL(Bsf(x0, x1, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, x1, x2), ITE(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, x1, x2), z3, z4, z5, eeval(x1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(Bsf(x0, x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, x1, x2), Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, x1, x2), z3, z4, z5, eeval(x1, z3, z4, z5)), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(x0, x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, x1, x2), Var(z0)), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, x1, x2), z1, z2, z3, eeval(x1, z1, z2, z3)), lookvar(z0, z1, z2)), EEVAL(Bsf(x0, x1, x2), z1, z2, z3)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) ---------------------------------------- (132) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, x1, x2), z2, z3, z4, eeval(x1, z2, z3, z4)), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, x1, x2), z2, z3, z4, eeval(x1, z2, z3, z4)), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1 ---------------------------------------- (133) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (134) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1 ---------------------------------------- (135) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EQEXP(F, eeval(x1, z0, z1, z2))) by EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) ---------------------------------------- (136) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1 ---------------------------------------- (137) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (138) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2 ---------------------------------------- (139) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EQEXP(T, eeval(x1, z0, z1, z2))) by EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) ---------------------------------------- (140) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2 ---------------------------------------- (141) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (142) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2 ---------------------------------------- (143) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) by EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) ---------------------------------------- (144) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2 ---------------------------------------- (145) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (146) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2 ---------------------------------------- (147) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) by EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) ---------------------------------------- (148) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2 ---------------------------------------- (149) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (150) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2 ---------------------------------------- (151) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) by EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), Eq(x1, Error(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Error(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) ---------------------------------------- (152) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), Eq(x1, Error(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Error(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), Eq(x1, Error(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Error(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2 ---------------------------------------- (153) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing tuple parts ---------------------------------------- (154) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2 ---------------------------------------- (155) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) by EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), T), ITE(Error(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) ---------------------------------------- (156) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), T), ITE(Error(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), T), ITE(Error(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2 ---------------------------------------- (157) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (158) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2 ---------------------------------------- (159) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) by EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) ---------------------------------------- (160) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2 ---------------------------------------- (161) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (162) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2 ---------------------------------------- (163) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) by EEVAL(Eq(Fun(x0, x1), Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(x0, x1), z2, z3, z4, lookbody(x0, z4)), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(x0, x1), z2, z3, z4, lookbody(x0, z4)), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(x0, x1), z2, z3, z4, lookbody(x0, z4)), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c32(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c32(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval[False][Let](Fun(x0, x1), z3, z4, z5, lookbody(x0, z5)), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(x0, x1), Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval[False][Let](Fun(x0, x1), z3, z4, z5, lookbody(x0, z5)), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c32(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) ---------------------------------------- (164) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(x0, x1), z2, z3, z4, lookbody(x0, z4)), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c32(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c32(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c32(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(x0, x1), z2, z3, z4, lookbody(x0, z4)), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c32(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c32(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c32(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2 ---------------------------------------- (165) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (166) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c32(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c32(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c32(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c32(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c32(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c32(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2 ---------------------------------------- (167) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (168) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2, c12_1 ---------------------------------------- (169) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), EEVAL(x1, z2, z3, z4)) by EEVAL(Eq(Eq(x0, x1), Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(x0, x1), z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(x0, x1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(x0, x1), z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(x0, x1), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Eq(x0, x1), Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(x0, x1), z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), Eq(x0, Error(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Error(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) ---------------------------------------- (170) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(x0, x1), z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), Eq(x0, Error(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Error(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(x0, x1), z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), Eq(x0, Error(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Error(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2, c12_1 ---------------------------------------- (171) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing tuple parts ---------------------------------------- (172) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2, c12_1 ---------------------------------------- (173) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (174) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EEVAL(Var(z0), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EEVAL(Var(z0), z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2, c12_1, c13_1 ---------------------------------------- (175) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(Eq(F, x1), z0, z1, z2) -> c32(EQEXP(F, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) by EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c32(EQEXP(F, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c32(EQEXP(F, F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(F, T), z0, z1, z2) -> c32(EQEXP(F, T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c32(EQEXP(F, lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) ---------------------------------------- (176) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c32(EQEXP(F, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c32(EQEXP(F, F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(F, T), z0, z1, z2) -> c32(EQEXP(F, T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c32(EQEXP(F, lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c32(EQEXP(F, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c32(EQEXP(F, F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(F, T), z0, z1, z2) -> c32(EQEXP(F, T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c32(EQEXP(F, lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2, c12_1, c13_1 ---------------------------------------- (177) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (178) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, F), z0, z1, z2) -> c32(EQEXP(F, F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(F, T), z0, z1, z2) -> c32(EQEXP(F, T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c32(EQEXP(F, lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, F), z0, z1, z2) -> c32(EQEXP(F, F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(F, T), z0, z1, z2) -> c32(EQEXP(F, T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c32(EQEXP(F, lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2, c12_1, c13_1 ---------------------------------------- (179) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (180) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EEVAL(F, z0, z1, z2)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EEVAL(T, z0, z1, z2)) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EEVAL(Var(z0), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EEVAL(F, z0, z1, z2)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EEVAL(T, z0, z1, z2)) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EEVAL(Var(z0), z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2, c12_1, c13_1, c15_1 ---------------------------------------- (181) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(Eq(T, x1), z0, z1, z2) -> c32(EQEXP(T, eeval(x1, z0, z1, z2)), EEVAL(x1, z0, z1, z2)) by EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c32(EQEXP(T, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(T, F), z0, z1, z2) -> c32(EQEXP(T, F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c32(EQEXP(T, T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c32(EQEXP(T, lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) ---------------------------------------- (182) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EEVAL(F, z0, z1, z2)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EEVAL(T, z0, z1, z2)) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c32(EQEXP(T, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(T, F), z0, z1, z2) -> c32(EQEXP(T, F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c32(EQEXP(T, T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c32(EQEXP(T, lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EEVAL(F, z0, z1, z2)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EEVAL(T, z0, z1, z2)) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c32(EQEXP(T, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(T, F), z0, z1, z2) -> c32(EQEXP(T, F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c32(EQEXP(T, T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c32(EQEXP(T, lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2, c12_1, c13_1, c15_1 ---------------------------------------- (183) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (184) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EEVAL(F, z0, z1, z2)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EEVAL(T, z0, z1, z2)) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(T, F), z0, z1, z2) -> c32(EQEXP(T, F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c32(EQEXP(T, T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c32(EQEXP(T, lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EEVAL(F, z0, z1, z2)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EEVAL(T, z0, z1, z2)) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(T, F), z0, z1, z2) -> c32(EQEXP(T, F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c32(EQEXP(T, T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c32(EQEXP(T, lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2, c12_1, c13_1, c15_1 ---------------------------------------- (185) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (186) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EEVAL(F, z0, z1, z2)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EEVAL(T, z0, z1, z2)) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(T, F), z0, z1, z2) -> c23(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c23(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c23(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c23(EEVAL(T, z0, z1, z2)) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c23(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c23(EEVAL(Var(z0), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EEVAL(F, z0, z1, z2)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EEVAL(T, z0, z1, z2)) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(T, F), z0, z1, z2) -> c23(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c23(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c23(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c23(EEVAL(T, z0, z1, z2)) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c23(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c23(EEVAL(Var(z0), z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2, c12_1, c13_1, c15_1, c23_1 ---------------------------------------- (187) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) by EEVAL(Eq(ITE(x0, x1, x2), Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z2, z3, z4), T), ITE(x0, x1, x2), z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(x0, x1, x2), Eq(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z2, z3, z4), T), ITE(x0, x1, x2), z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z2, z3, z4), T), ITE(x0, x1, x2), z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(x0, x1, x2), F), z0, z1, z2) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z0, z1, z2), T), ITE(x0, x1, x2), z0, z1, z2), F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(ITE(x0, x1, x2), T), z0, z1, z2) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z0, z1, z2), T), ITE(x0, x1, x2), z0, z1, z2), T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(x0, x1, x2), ITE(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z3, z4, z5), T), ITE(x0, x1, x2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(ITE(x0, x1, x2), Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z3, z4, z5), T), ITE(x0, x1, x2), z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(ITE(x0, x1, x2), Var(z0)), z1, z2, z3) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z1, z2, z3), T), ITE(x0, x1, x2), z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(x3, z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(x3, z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), T), ITE(Error(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(x3, z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c32(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(x3, z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c32(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(x3, z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(x3, z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(x3, z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c32(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(x3, z1, z2, z3)) ---------------------------------------- (188) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EEVAL(F, z0, z1, z2)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EEVAL(T, z0, z1, z2)) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(T, F), z0, z1, z2) -> c23(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c23(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c23(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c23(EEVAL(T, z0, z1, z2)) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c23(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c23(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z2, z3, z4), T), ITE(x0, x1, x2), z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(x0, x1, x2), F), z0, z1, z2) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z0, z1, z2), T), ITE(x0, x1, x2), z0, z1, z2), F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(ITE(x0, x1, x2), T), z0, z1, z2) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z0, z1, z2), T), ITE(x0, x1, x2), z0, z1, z2), T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(x0, x1, x2), Var(z0)), z1, z2, z3) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z1, z2, z3), T), ITE(x0, x1, x2), z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(x3, z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(x3, z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), T), ITE(Error(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(x3, z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c32(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(x3, z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c32(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(x3, z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(x3, z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(x3, z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c32(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(x3, z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EEVAL(F, z0, z1, z2)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EEVAL(T, z0, z1, z2)) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(T, F), z0, z1, z2) -> c23(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c23(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c23(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c23(EEVAL(T, z0, z1, z2)) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c23(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c23(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z2, z3, z4), T), ITE(x0, x1, x2), z2, z3, z4), eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(x0, x1, x2), F), z0, z1, z2) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z0, z1, z2), T), ITE(x0, x1, x2), z0, z1, z2), F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(ITE(x0, x1, x2), T), z0, z1, z2) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z0, z1, z2), T), ITE(x0, x1, x2), z0, z1, z2), T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(x0, x1, x2), Var(z0)), z1, z2, z3) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z1, z2, z3), T), ITE(x0, x1, x2), z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(x3, z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(x3, z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), T), ITE(Error(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(x3, z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c32(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(x3, z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c32(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(x3, z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(x3, z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(x3, z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c32(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(x3, z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2, c12_1, c13_1, c15_1, c23_1 ---------------------------------------- (189) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (190) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EEVAL(F, z0, z1, z2)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EEVAL(T, z0, z1, z2)) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(T, F), z0, z1, z2) -> c23(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c23(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c23(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c23(EEVAL(T, z0, z1, z2)) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c23(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c23(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), F), z0, z1, z2) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z0, z1, z2), T), ITE(x0, x1, x2), z0, z1, z2), F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(ITE(x0, x1, x2), T), z0, z1, z2) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z0, z1, z2), T), ITE(x0, x1, x2), z0, z1, z2), T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(x0, x1, x2), Var(z0)), z1, z2, z3) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z1, z2, z3), T), ITE(x0, x1, x2), z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(x3, z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(x3, z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c32(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(x3, z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c32(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(x3, z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(x3, z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(x3, z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c32(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(x3, z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c32(EEVAL(x3, z2, z3, z4)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EEVAL(F, z0, z1, z2)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EEVAL(T, z0, z1, z2)) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(T, F), z0, z1, z2) -> c23(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c23(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c23(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c23(EEVAL(T, z0, z1, z2)) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c23(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c23(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), F), z0, z1, z2) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z0, z1, z2), T), ITE(x0, x1, x2), z0, z1, z2), F), EEVAL(F, z0, z1, z2)) EEVAL(Eq(ITE(x0, x1, x2), T), z0, z1, z2) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z0, z1, z2), T), ITE(x0, x1, x2), z0, z1, z2), T), EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(x0, x1, x2), Var(z0)), z1, z2, z3) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z1, z2, z3), T), ITE(x0, x1, x2), z1, z2, z3), lookvar(z0, z1, z2)), EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(x3, z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(x3, z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c32(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(x3, z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c32(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(x3, z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(x3, z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(x3, z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c32(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(x3, z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c32(EEVAL(x3, z2, z3, z4)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2, c12_1, c13_1, c15_1, c23_1 ---------------------------------------- (191) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (192) Obligation: Complexity Dependency Tuples Problem Rules: lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) !EQ(S(z0), S(z1)) -> !EQ(z0, z1) !EQ(0, S(z0)) -> False !EQ(S(z0), 0) -> False !EQ(0, 0) -> True eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) eeval(Eq(z0, z1), z2, z3, z4) -> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4) eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) eeval(F, z0, z1, z2) -> F eeval(T, z0, z1, z2) -> T eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6) -> eeval[Let][Let][Let](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) eeval[True][Ite](False, z0, z1, z2, z3) -> F eeval[True][Ite](True, z0, z1, z2, z3) -> T eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Error(z0, z1), F) -> False eqExp(Error(z0, z1), T) -> False eqExp(Error(z0, z1), Fun(z2, z3)) -> False eqExp(Error(z0, z1), Eq(z2, z3)) -> False eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Error(z0, z1), Var(z2)) -> False eqExp(F, Error(z0, z1)) -> False eqExp(F, F) -> True eqExp(F, T) -> False eqExp(F, Fun(z0, z1)) -> False eqExp(F, Eq(z0, z1)) -> False eqExp(F, ITE(z0, z1, z2)) -> False eqExp(F, Bsf(z0, z1, z2)) -> False eqExp(F, Var(z0)) -> False eqExp(T, Error(z0, z1)) -> False eqExp(T, F) -> False eqExp(T, T) -> True eqExp(T, Fun(z0, z1)) -> False eqExp(T, Eq(z0, z1)) -> False eqExp(T, ITE(z0, z1, z2)) -> False eqExp(T, Bsf(z0, z1, z2)) -> False eqExp(T, Var(z0)) -> False eqExp(Fun(z0, z1), Error(z2, z3)) -> False eqExp(Fun(z0, z1), F) -> False eqExp(Fun(z0, z1), T) -> False eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) eqExp(Fun(z0, z1), Eq(z2, z3)) -> False eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Fun(z0, z1), Var(z2)) -> False eqExp(Eq(z0, z1), Error(z2, z3)) -> False eqExp(Eq(z0, z1), F) -> False eqExp(Eq(z0, z1), T) -> False eqExp(Eq(z0, z1), Fun(z2, z3)) -> False eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False eqExp(Eq(z0, z1), Var(z2)) -> False eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False eqExp(ITE(z0, z1, z2), F) -> False eqExp(ITE(z0, z1, z2), T) -> False eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False eqExp(ITE(z0, z1, z2), Var(z3)) -> False eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), F) -> False eqExp(Bsf(z0, z1, z2), T) -> False eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) eqExp(Bsf(z0, z1, z2), Var(z3)) -> False eqExp(Var(z0), Error(z1, z2)) -> False eqExp(Var(z0), F) -> False eqExp(Var(z0), T) -> False eqExp(Var(z0), Fun(z1, z2)) -> False eqExp(Var(z0), Eq(z1, z2)) -> False eqExp(Var(z0), ITE(z1, z2, z3)) -> False eqExp(Var(z0), Bsf(z1, z2, z3)) -> False eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) checkConstrExp(Error(z0, z1), T) -> False checkConstrExp(F, T) -> False checkConstrExp(T, T) -> True checkConstrExp(Fun(z0, z1), T) -> False checkConstrExp(Eq(z0, z1), T) -> False checkConstrExp(ITE(z0, z1, z2), T) -> False checkConstrExp(Bsf(z0, z1, z2), T) -> False checkConstrExp(Var(z0), T) -> False eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, z6) -> eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)) lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) apply[Ite](False, z0, z1, z2) -> F apply[Ite](True, z0, z1, z2) -> T and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Tuples: !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, z5) -> c19(EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)), LOOKNAME(z0, z4)) EEVAL[FALSE][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6) -> c20(EEVAL[LET][LET][LET](Fun(z0, z1), z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, z6) -> c21(EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, eeval(z2, z3, z4, z5)), EEVAL(z2, z3, z4, z5)) EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) RUN(Cons(Fun(z0, z2), z3), x3) -> c1(RUN[LET][LET](Cons(Fun(z0, z2), z3), x3, z0, lookbody[Ite](!EQ(z0, z0), z0, Cons(Fun(z0, z2), z3)))) EEVAL[FALSE][ITE](True, Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL[FALSE][ITE](True, Eq(x0, Eq(z0, z1)), z2, z3, z4) -> c1(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(x0, F), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL[FALSE][ITE](True, Eq(x0, T), z0, z1, z2) -> c1(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL[FALSE][ITE](True, Eq(x0, ITE(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c1(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL[FALSE][ITE](True, Eq(x0, Var(z0)), z1, z2, z3) -> c1(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(Fun(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(Eq(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) EEVAL[FALSE][ITE](True, Eq(F, x1), z0, z1, z2) -> c1(EQEXP(F, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(T, x1), z0, z1, z2) -> c1(EQEXP(T, eeval(x1, z0, z1, z2))) EEVAL[FALSE][ITE](True, Eq(ITE(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c1(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5))) EEVAL[FALSE][ITE](True, Eq(Var(z0), x1), z1, z2, z3) -> c1(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3))) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EEVAL(F, z0, z1, z2)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EEVAL(T, z0, z1, z2)) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(T, F), z0, z1, z2) -> c23(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c23(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c23(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c23(EEVAL(T, z0, z1, z2)) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c23(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c23(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(x3, z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(x3, z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c32(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(x3, z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c32(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(x3, z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(x3, z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(x3, z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c32(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(x3, z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c32(EEVAL(x3, z2, z3, z4)) EEVAL(Eq(ITE(x0, x1, x2), F), z0, z1, z2) -> c24(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z0, z1, z2), T), ITE(x0, x1, x2), z0, z1, z2), F)) EEVAL(Eq(ITE(x0, x1, x2), F), z0, z1, z2) -> c24(EEVAL(F, z0, z1, z2)) EEVAL(Eq(ITE(x0, x1, x2), T), z0, z1, z2) -> c24(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z0, z1, z2), T), ITE(x0, x1, x2), z0, z1, z2), T)) EEVAL(Eq(ITE(x0, x1, x2), T), z0, z1, z2) -> c24(EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(x0, x1, x2), Var(z0)), z1, z2, z3) -> c24(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z1, z2, z3), T), ITE(x0, x1, x2), z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(ITE(x0, x1, x2), Var(z0)), z1, z2, z3) -> c24(EEVAL(Var(z0), z1, z2, z3)) S tuples: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) EEVAL(F, z0, z1, z2) -> c34 EEVAL(T, z0, z1, z2) -> c35 EEVAL(Bsf(z0, z1, z2), z3, z4, z5) -> c37(EEVAL[LET](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), EEVAL(z1, z3, z4, z5)) EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) EQEXP(Error(z0, z1), F) -> c42 EQEXP(Error(z0, z1), T) -> c43 EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 EQEXP(Error(z0, z1), Var(z2)) -> c48 EQEXP(F, Error(z0, z1)) -> c49 EQEXP(F, F) -> c50 EQEXP(F, T) -> c51 EQEXP(F, Fun(z0, z1)) -> c52 EQEXP(F, Eq(z0, z1)) -> c53 EQEXP(F, ITE(z0, z1, z2)) -> c54 EQEXP(F, Bsf(z0, z1, z2)) -> c55 EQEXP(F, Var(z0)) -> c56 EQEXP(T, Error(z0, z1)) -> c57 EQEXP(T, F) -> c58 EQEXP(T, T) -> c59 EQEXP(T, Fun(z0, z1)) -> c60 EQEXP(T, Eq(z0, z1)) -> c61 EQEXP(T, ITE(z0, z1, z2)) -> c62 EQEXP(T, Bsf(z0, z1, z2)) -> c63 EQEXP(T, Var(z0)) -> c64 EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 EQEXP(Fun(z0, z1), F) -> c66 EQEXP(Fun(z0, z1), T) -> c67 EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 EQEXP(Fun(z0, z1), Var(z2)) -> c73 EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 EQEXP(Eq(z0, z1), F) -> c75 EQEXP(Eq(z0, z1), T) -> c76 EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 EQEXP(Eq(z0, z1), Var(z2)) -> c82 EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 EQEXP(ITE(z0, z1, z2), F) -> c84 EQEXP(ITE(z0, z1, z2), T) -> c85 EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 EQEXP(Bsf(z0, z1, z2), F) -> c94 EQEXP(Bsf(z0, z1, z2), T) -> c95 EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 EQEXP(Var(z0), Error(z1, z2)) -> c102 EQEXP(Var(z0), F) -> c103 EQEXP(Var(z0), T) -> c104 EQEXP(Var(z0), Fun(z1, z2)) -> c105 EQEXP(Var(z0), Eq(z1, z2)) -> c106 EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) EEVAL(Error(z0, z1), z2, z3, z4) -> c33 EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) LOOKNAME(0, Cons(Fun(S(z0), x2), x3)) -> c174(LOOKNAME[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKNAME(S(z0), Cons(Fun(0, x2), x3)) -> c174(LOOKNAME[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKNAME(0, Cons(Fun(0, x2), x3)) -> c174 LOOKBODY(0, Cons(Fun(S(z0), x2), x3)) -> c175(LOOKBODY[ITE](False, 0, Cons(Fun(S(z0), x2), x3))) LOOKBODY(S(z0), Cons(Fun(0, x2), x3)) -> c175(LOOKBODY[ITE](False, S(z0), Cons(Fun(0, x2), x3))) LOOKBODY(0, Cons(Fun(0, x2), x3)) -> c175 LOOKVAR(0, Cons(S(z0), x2), x3) -> c189(LOOKVAR[ITE](False, 0, Cons(S(z0), x2), x3)) LOOKVAR(S(z0), Cons(0, x2), x3) -> c189(LOOKVAR[ITE](False, S(z0), Cons(0, x2), x3)) LOOKVAR(0, Cons(0, x2), x3) -> c189 EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, x1), z0, z1, z2) -> c2(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, x1), z0, z1, z2) -> c2(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c2(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), EEVAL(x1, z3, z4, z5)) EEVAL(Eq(Var(z0), x1), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), EEVAL(x1, z1, z2, z3)) EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4) -> c32(EEVAL(x1, z2, z3, z4)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), F)) EEVAL(Eq(x0, F), z0, z1, z2) -> c3(EEVAL(F, z0, z1, z2)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EQEXP(eeval(x0, z0, z1, z2), T)) EEVAL(Eq(x0, T), z0, z1, z2) -> c3(EEVAL(T, z0, z1, z2)) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EQEXP(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(x0, Var(z0)), z1, z2, z3) -> c3(EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL[ITE](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(ITE(F, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), EEVAL(F, z0, z1, z2)) EEVAL(ITE(T, x1, x2), z0, z1, z2) -> c36(EEVAL[ITE](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), EEVAL(T, z0, z1, z2)) EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5) -> c36(EEVAL[ITE](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3) -> c36(EEVAL[ITE](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), EEVAL(Var(z0), z1, z2, z3)) EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4) -> c36(EEVAL(Error(z0, z1), z2, z3, z4)) LOOKNAME(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKNAME(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c174(LOOKNAME[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKNAME(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c174(LOOKNAME[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKNAME(S(x0), Cons(Fun(S(x1), x2), x3)) -> c174(!EQ'(S(x0), S(x1))) LOOKNAME(S(0), Cons(Fun(S(0), x2), x3)) -> c174(!EQ'(S(0), S(0))) LOOKBODY(S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), S(S(z0)), Cons(Fun(S(S(z1)), x2), x3)), !EQ'(S(S(z0)), S(S(z1)))) LOOKBODY(S(0), Cons(Fun(S(S(z0)), x2), x3)) -> c175(LOOKBODY[ITE](False, S(0), Cons(Fun(S(S(z0)), x2), x3)), !EQ'(S(0), S(S(z0)))) LOOKBODY(S(S(z0)), Cons(Fun(S(0), x2), x3)) -> c175(LOOKBODY[ITE](False, S(S(z0)), Cons(Fun(S(0), x2), x3)), !EQ'(S(S(z0)), S(0))) LOOKBODY(S(x0), Cons(Fun(S(x1), x2), x3)) -> c175(!EQ'(S(x0), S(x1))) LOOKBODY(S(0), Cons(Fun(S(0), x2), x3)) -> c175(!EQ'(S(0), S(0))) LOOKVAR(S(S(z0)), Cons(S(S(z1)), x2), x3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), S(S(z0)), Cons(S(S(z1)), x2), x3), !EQ'(S(S(z0)), S(S(z1)))) LOOKVAR(S(0), Cons(S(S(z0)), x2), x3) -> c189(LOOKVAR[ITE](False, S(0), Cons(S(S(z0)), x2), x3), !EQ'(S(0), S(S(z0)))) LOOKVAR(S(S(z0)), Cons(S(0), x2), x3) -> c189(LOOKVAR[ITE](False, S(S(z0)), Cons(S(0), x2), x3), !EQ'(S(S(z0)), S(0))) LOOKVAR(S(x0), Cons(S(x1), x2), x3) -> c189(!EQ'(S(x0), S(x1))) LOOKVAR(S(0), Cons(S(0), x2), x3) -> c189(!EQ'(S(0), S(0))) EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(x0, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2)))) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c4(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3)))) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c4(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2))) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c5(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3))) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c5(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), F), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), F), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), F), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), F), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), F), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), F), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), F), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c6(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c6(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EQEXP(lookvar(z0, z1, z2), F)) EEVAL(Eq(Var(z0), F), z1, z2, z3) -> c6(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), T), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), T), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), T), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c7(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c7(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EQEXP(lookvar(z0, z1, z2), T)) EEVAL(Eq(Var(z0), T), z1, z2, z3) -> c7(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c31(EEVAL(x0, z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2))) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c8(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3))) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c8(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c31(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(x0, z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c31(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(x0, z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c31(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(x0, z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c31(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(x0, z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2)))) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c9(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3)))) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c9(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(x0, Var(z0)), Cons(z1, z2), z3, x4) -> c31(EQEXP(eeval(x0, Cons(z1, z2), z3, x4), lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3)), EEVAL(x0, Cons(z1, z2), z3, x4)) EEVAL(Eq(Fun(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), lookvar(x1, z2, z3)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Var(x1)), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), lookvar(x1, z2, z3)), EEVAL(Eq(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), lookvar(x1, z3, z4)), EEVAL(ITE(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Var(x1)), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), lookvar(x1, z3, z4)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Error(z0, z1), Var(x1)), z2, z3, z4) -> c31(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EQEXP(F, lookvar(x1, z0, z1))) EEVAL(Eq(F, Var(x1)), z0, z1, z2) -> c10(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EQEXP(T, lookvar(x1, z0, z1))) EEVAL(Eq(T, Var(x1)), z0, z1, z2) -> c10(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EQEXP(lookvar(z0, z1, z2), lookvar(x1, z1, z2))) EEVAL(Eq(Var(z0), Var(x1)), z1, z2, z3) -> c10(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c31(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c31(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), x2), x3, x4, x5) -> c31(EEVAL(Fun(x0, x1), x3, x4, x5)) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Fun(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(x0, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, F), z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(x0, T), z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(x0, Var(z0)), z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(F, x1), z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c31(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(Eq(T, x1), z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c31(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x1), z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c31(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(Eq(Var(z0), x1), z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Eq(x0, x1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c31(EEVAL(Eq(x0, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c31(EEVAL(Eq(Error(z0, z1), x1), z2, z3, z4)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(F, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(ITE(T, x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(ITE(Var(z0), x1, x2), z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(ITE(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c31(EEVAL(ITE(Error(z0, z1), x1, x2), z2, z3, z4)) EEVAL(Eq(Bsf(z0, z1, z2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Fun(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Fun(z0, z1), x2), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Eq(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Eq(z0, z1), x2), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, Error(z0, z1), x2), x3), z2, z3, z4) -> c31(EQEXP(eeval[Let](Bsf(x0, Error(z0, z1), x2), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4)), eeval(x3, z2, z3, z4)), EEVAL(Bsf(x0, Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Bsf(x0, F, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, F, x2), z0, z1, z2, F), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, F, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, T, x2), x3), z0, z1, z2) -> c31(EQEXP(eeval[Let](Bsf(x0, T, x2), z0, z1, z2, T), eeval(x3, z0, z1, z2)), EEVAL(Bsf(x0, T, x2), z0, z1, z2)) EEVAL(Eq(Bsf(x0, ITE(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Bsf(z0, z1, z2), x2), x3), z3, z4, z5) -> c31(EQEXP(eeval[Let](Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), eeval(x3, z3, z4, z5)), EEVAL(Bsf(x0, Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(Bsf(x0, Var(z0), x2), x3), z1, z2, z3) -> c31(EQEXP(eeval[Let](Bsf(x0, Var(z0), x2), z1, z2, z3, lookvar(z0, z1, z2)), eeval(x3, z1, z2, z3)), EEVAL(Bsf(x0, Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Bsf(x0, x1, x2), x3), x4, x5, x6) -> c31(EEVAL(Bsf(x0, x1, x2), x4, x5, x6)) EEVAL(Eq(Bsf(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c31(EEVAL(Bsf(x0, x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(F, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(F, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(F, F), z0, z1, z2) -> c2(EQEXP(F, F)) EEVAL(Eq(F, T), z0, z1, z2) -> c2(EQEXP(F, T)) EEVAL(Eq(F, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(F, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(F, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c2(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(T, Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(T, Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(T, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(T, F), z0, z1, z2) -> c2(EQEXP(T, F)) EEVAL(Eq(T, T), z0, z1, z2) -> c2(EQEXP(T, T)) EEVAL(Eq(T, ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(T, Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(T, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c2(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(Var(x0), Fun(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))) EEVAL(Eq(Var(x0), Eq(z0, z1)), z2, z3, z4) -> c2(EQEXP(lookvar(x0, z2, z3), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))) EEVAL(Eq(Var(x0), F), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), F)) EEVAL(Eq(Var(x0), T), z0, z1, z2) -> c2(EQEXP(lookvar(x0, z0, z1), T)) EEVAL(Eq(Var(x0), ITE(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))) EEVAL(Eq(Var(x0), Bsf(z0, z1, z2)), z3, z4, z5) -> c2(EQEXP(lookvar(x0, z3, z4), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))) EEVAL(Eq(Var(x0), Var(z0)), z1, z2, z3) -> c2(EQEXP(lookvar(x0, z1, z2), lookvar(z0, z1, z2))) EEVAL(Eq(Var(z0), x1), Cons(z1, z2), z3, x4) -> c2(EQEXP(lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3), eeval(x1, Cons(z1, z2), z3, x4))) EEVAL(Eq(Var(x0), Error(z0, z1)), z2, z3, z4) -> c2 EEVAL(Eq(x0, Fun(z0, z1)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4))), EEVAL(Fun(z0, z1), z2, z3, z4)) EEVAL(Eq(x0, Fun(z0, x2)), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval(x0, x3, x4, Cons(Fun(z1, z2), z3)), eeval[False][Let](Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)))), EEVAL(Fun(z0, x2), x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[False][Let](Fun(x1, x2), z2, z3, z4, lookbody(x1, z4))), EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Fun(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[False][Let](Fun(x1, x2), z0, z1, z2, lookbody(x1, z2))), EEVAL(Fun(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Fun(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[False][Let](Fun(x1, x2), z3, z4, z5, lookbody(x1, z5))), EEVAL(Fun(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Fun(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[False][Let](Fun(x1, x2), z1, z2, z3, lookbody(x1, z3))), EEVAL(Fun(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Fun(x1, x2)), x3, x4, x5) -> c32(EEVAL(Fun(x1, x2), x3, x4, x5)) EEVAL(Eq(Error(z0, z1), Fun(x1, x2)), z2, z3, z4) -> c32(EEVAL(Fun(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Fun(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x1, Fun(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Fun(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, Eq(z0, z1))), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x1, Eq(z0, z1)), z2, z3, z4)), EEVAL(Eq(x1, Eq(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(x1, F)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), F), Eq(x1, F), z0, z1, z2)), EEVAL(Eq(x1, F), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, T)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), T), Eq(x1, T), z0, z1, z2)), EEVAL(Eq(x1, T), z0, z1, z2)) EEVAL(Eq(x0, Eq(x1, ITE(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, ITE(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Bsf(z0, z1, z2))), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)), EEVAL(Eq(x1, Bsf(z0, z1, z2)), z3, z4, z5)) EEVAL(Eq(x0, Eq(x1, Var(z0))), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x1, Var(z0)), z1, z2, z3)), EEVAL(Eq(x1, Var(z0)), z1, z2, z3)) EEVAL(Eq(x0, Eq(Fun(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x2, z2, z3, z4)), Eq(Fun(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(Eq(z0, z1), x2)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(Eq(z0, z1), x2), z2, z3, z4)), EEVAL(Eq(Eq(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(x0, Eq(F, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(F, eeval(x2, z0, z1, z2)), Eq(F, x2), z0, z1, z2)), EEVAL(Eq(F, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(T, x2)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[True][Ite](eqExp(T, eeval(x2, z0, z1, z2)), Eq(T, x2), z0, z1, z2)), EEVAL(Eq(T, x2), z0, z1, z2)) EEVAL(Eq(x0, Eq(ITE(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(ITE(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(ITE(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Bsf(z0, z1, z2), x2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x2, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)), EEVAL(Eq(Bsf(z0, z1, z2), x2), z3, z4, z5)) EEVAL(Eq(x0, Eq(Var(z0), x2)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x2, z1, z2, z3)), Eq(Var(z0), x2), z1, z2, z3)), EEVAL(Eq(Var(z0), x2), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[True][Ite](eqExp(eeval(x1, z2, z3, z4), eeval(x2, z2, z3, z4)), Eq(x1, x2), z2, z3, z4)), EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(F, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(F, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(T, Eq(x1, x2)), z0, z1, z2) -> c32(EQEXP(T, eeval[True][Ite](eqExp(eeval(x1, z0, z1, z2), eeval(x2, z0, z1, z2)), Eq(x1, x2), z0, z1, z2)), EEVAL(Eq(x1, x2), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Eq(x1, x2)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[True][Ite](eqExp(eeval(x1, z3, z4, z5), eeval(x2, z3, z4, z5)), Eq(x1, x2), z3, z4, z5)), EEVAL(Eq(x1, x2), z3, z4, z5)) EEVAL(Eq(Var(z0), Eq(x1, x2)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[True][Ite](eqExp(eeval(x1, z1, z2, z3), eeval(x2, z1, z2, z3)), Eq(x1, x2), z1, z2, z3)), EEVAL(Eq(x1, x2), z1, z2, z3)) EEVAL(Eq(x0, Eq(x1, Error(z0, z1))), z2, z3, z4) -> c32(EEVAL(Eq(x1, Error(z0, z1)), z2, z3, z4)) EEVAL(Eq(x0, Eq(Error(z0, z1), x2)), z2, z3, z4) -> c32(EEVAL(Eq(Error(z0, z1), x2), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), Eq(x1, x2)), z2, z3, z4) -> c32(EEVAL(Eq(x1, x2), z2, z3, z4)) EEVAL(Eq(x0, ITE(Fun(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Fun(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(Eq(z0, z1), x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x2, x3), z2, z3, z4)), EEVAL(ITE(Eq(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(x0, ITE(F, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(F, T), ITE(F, x2, x3), z0, z1, z2)), EEVAL(ITE(F, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(T, x2, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Ite](checkConstrExp(T, T), ITE(T, x2, x3), z0, z1, z2)), EEVAL(ITE(T, x2, x3), z0, z1, z2)) EEVAL(Eq(x0, ITE(ITE(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(ITE(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Bsf(z0, z1, z2), x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)), EEVAL(ITE(Bsf(z0, z1, z2), x2, x3), z3, z4, z5)) EEVAL(Eq(x0, ITE(Var(z0), x2, x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x2, x3), z1, z2, z3)), EEVAL(ITE(Var(z0), x2, x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Ite](checkConstrExp(eeval(x1, z2, z3, z4), T), ITE(x1, x2, x3), z2, z3, z4)), EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, ITE(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Ite](checkConstrExp(eeval(x1, z0, z1, z2), T), ITE(x1, x2, x3), z0, z1, z2)), EEVAL(ITE(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), ITE(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Ite](checkConstrExp(eeval(x1, z3, z4, z5), T), ITE(x1, x2, x3), z3, z4, z5)), EEVAL(ITE(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), ITE(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Ite](checkConstrExp(eeval(x1, z1, z2, z3), T), ITE(x1, x2, x3), z1, z2, z3)), EEVAL(ITE(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, ITE(Error(z0, z1), x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(Error(z0, z1), x2, x3), z2, z3, z4)) EEVAL(Eq(Error(z0, z1), ITE(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(ITE(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5), eeval(z2, z3, z4, z5))), EEVAL(Bsf(z0, z1, z2), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Fun(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Fun(z0, z1), x3), z2, z3, z4, eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)))), EEVAL(Bsf(x1, Fun(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Eq(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Eq(z0, z1), x3), z2, z3, z4, eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Eq(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, Error(z0, z1), x3)), z2, z3, z4) -> c32(EQEXP(eeval(x0, z2, z3, z4), eeval[Let](Bsf(x1, Error(z0, z1), x3), z2, z3, z4, eeval[False][Ite](False, Error(z0, z1), z2, z3, z4))), EEVAL(Bsf(x1, Error(z0, z1), x3), z2, z3, z4)) EEVAL(Eq(x0, Bsf(x1, F, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, F, x3), z0, z1, z2, F)), EEVAL(Bsf(x1, F, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, T, x3)), z0, z1, z2) -> c32(EQEXP(eeval(x0, z0, z1, z2), eeval[Let](Bsf(x1, T, x3), z0, z1, z2, T)), EEVAL(Bsf(x1, T, x3), z0, z1, z2)) EEVAL(Eq(x0, Bsf(x1, ITE(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5, eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5))), EEVAL(Bsf(x1, ITE(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Bsf(z0, z1, z2), x3)), z3, z4, z5) -> c32(EQEXP(eeval(x0, z3, z4, z5), eeval[Let](Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5, eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)))), EEVAL(Bsf(x1, Bsf(z0, z1, z2), x3), z3, z4, z5)) EEVAL(Eq(x0, Bsf(x1, Var(z0), x3)), z1, z2, z3) -> c32(EQEXP(eeval(x0, z1, z2, z3), eeval[Let](Bsf(x1, Var(z0), x3), z1, z2, z3, lookvar(z0, z1, z2))), EEVAL(Bsf(x1, Var(z0), x3), z1, z2, z3)) EEVAL(Eq(Fun(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Eq(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval[Let](Bsf(x1, x2, x3), z2, z3, z4, eeval(x2, z2, z3, z4))), EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(F, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(F, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(T, Bsf(x1, x2, x3)), z0, z1, z2) -> c32(EQEXP(T, eeval[Let](Bsf(x1, x2, x3), z0, z1, z2, eeval(x2, z0, z1, z2))), EEVAL(Bsf(x1, x2, x3), z0, z1, z2)) EEVAL(Eq(ITE(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Bsf(z0, z1, z2), Bsf(x1, x2, x3)), z3, z4, z5) -> c32(EQEXP(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval[Let](Bsf(x1, x2, x3), z3, z4, z5, eeval(x2, z3, z4, z5))), EEVAL(Bsf(x1, x2, x3), z3, z4, z5)) EEVAL(Eq(Var(z0), Bsf(x1, x2, x3)), z1, z2, z3) -> c32(EQEXP(lookvar(z0, z1, z2), eeval[Let](Bsf(x1, x2, x3), z1, z2, z3, eeval(x2, z1, z2, z3))), EEVAL(Bsf(x1, x2, x3), z1, z2, z3)) EEVAL(Eq(x0, Bsf(x1, x2, x3)), x4, x5, x6) -> c32(EEVAL(Bsf(x1, x2, x3), x4, x5, x6)) EEVAL(Eq(Error(z0, z1), Bsf(x1, x2, x3)), z2, z3, z4) -> c32(EEVAL(Bsf(x1, x2, x3), z2, z3, z4)) EEVAL(Eq(Fun(z0, z1), x2), z2, z3, z4) -> c32(EQEXP(eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4), lookname(z0, z4)), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Fun(z0, x1), x2), x3, x4, Cons(Fun(z1, z2), z3)) -> c32(EQEXP(eeval[False][Let](Fun(z0, x1), x3, x4, Cons(Fun(z1, z2), z3), lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3))), eeval(x2, x3, x4, Cons(Fun(z1, z2), z3))), EEVAL(x2, x3, x4, Cons(Fun(z1, z2), z3))) EEVAL(Eq(Fun(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), F)) EEVAL(Eq(Fun(x0, x1), F), z0, z1, z2) -> c12(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z0, z1, z2, lookbody(x0, z2)), T)) EEVAL(Eq(Fun(x0, x1), T), z0, z1, z2) -> c12(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EQEXP(eeval[False][Let](Fun(x0, x1), z1, z2, z3, lookbody(x0, z3)), lookvar(z0, z1, z2))) EEVAL(Eq(Fun(x0, x1), Var(z0)), z1, z2, z3) -> c12(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(Eq(x0, Fun(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))), Eq(x0, Fun(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, Eq(z0, z1)), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z2, z3, z4), eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4)), Eq(x0, Eq(z0, z1)), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, F), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), F), Eq(x0, F), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, T), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), T), Eq(x0, T), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(x0, ITE(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5)), Eq(x0, ITE(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Bsf(z0, z1, z2)), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z3, z4, z5), eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5))), Eq(x0, Bsf(z0, z1, z2)), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(x0, Var(z0)), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), lookvar(z0, z1, z2)), Eq(x0, Var(z0)), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(Fun(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), eeval(x1, z2, z3, z4)), Eq(Fun(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Eq(z0, z1), x1), x2), z2, z3, z4) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4)), Eq(Eq(z0, z1), x1), z2, z3, z4), eeval(x2, z2, z3, z4)), EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(F, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(F, eeval(x1, z0, z1, z2)), Eq(F, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(T, x1), x2), z0, z1, z2) -> c32(EQEXP(eeval[True][Ite](eqExp(T, eeval(x1, z0, z1, z2)), Eq(T, x1), z0, z1, z2), eeval(x2, z0, z1, z2)), EEVAL(x2, z0, z1, z2)) EEVAL(Eq(Eq(ITE(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), eeval(x1, z3, z4, z5)), Eq(ITE(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Bsf(z0, z1, z2), x1), x2), z3, z4, z5) -> c32(EQEXP(eeval[True][Ite](eqExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), eeval(x1, z3, z4, z5)), Eq(Bsf(z0, z1, z2), x1), z3, z4, z5), eeval(x2, z3, z4, z5)), EEVAL(x2, z3, z4, z5)) EEVAL(Eq(Eq(Var(z0), x1), x2), z1, z2, z3) -> c32(EQEXP(eeval[True][Ite](eqExp(lookvar(z0, z1, z2), eeval(x1, z1, z2, z3)), Eq(Var(z0), x1), z1, z2, z3), eeval(x2, z1, z2, z3)), EEVAL(x2, z1, z2, z3)) EEVAL(Eq(Eq(x0, x1), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(Eq(x0, Error(z0, z1)), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(Error(z0, z1), x1), x2), z2, z3, z4) -> c32(EEVAL(x2, z2, z3, z4)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), F)) EEVAL(Eq(Eq(x0, x1), F), z0, z1, z2) -> c13(EEVAL(F, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z0, z1, z2), eeval(x1, z0, z1, z2)), Eq(x0, x1), z0, z1, z2), T)) EEVAL(Eq(Eq(x0, x1), T), z0, z1, z2) -> c13(EEVAL(T, z0, z1, z2)) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EQEXP(eeval[True][Ite](eqExp(eeval(x0, z1, z2, z3), eeval(x1, z1, z2, z3)), Eq(x0, x1), z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(Eq(x0, x1), Var(z0)), z1, z2, z3) -> c13(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(F, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EQEXP(F, F)) EEVAL(Eq(F, F), z0, z1, z2) -> c15(EEVAL(F, z0, z1, z2)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EQEXP(F, T)) EEVAL(Eq(F, T), z0, z1, z2) -> c15(EEVAL(T, z0, z1, z2)) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EQEXP(F, lookvar(z0, z1, z2))) EEVAL(Eq(F, Var(z0)), z1, z2, z3) -> c15(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(T, Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(T, F), z0, z1, z2) -> c23(EQEXP(T, F)) EEVAL(Eq(T, F), z0, z1, z2) -> c23(EEVAL(F, z0, z1, z2)) EEVAL(Eq(T, T), z0, z1, z2) -> c23(EQEXP(T, T)) EEVAL(Eq(T, T), z0, z1, z2) -> c23(EEVAL(T, z0, z1, z2)) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c23(EQEXP(T, lookvar(z0, z1, z2))) EEVAL(Eq(T, Var(z0)), z1, z2, z3) -> c23(EEVAL(Var(z0), z1, z2, z3)) EEVAL(Eq(ITE(Fun(z0, z1), x1, x2), x3), z2, z3, z4) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), T), ITE(Fun(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(x3, z2, z3, z4)) EEVAL(Eq(ITE(Eq(z0, z1), x1, x2), x3), z2, z3, z4) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), Eq(z0, z1), z2, z3, z4), T), ITE(Eq(z0, z1), x1, x2), z2, z3, z4), eeval(x3, z2, z3, z4)), EEVAL(x3, z2, z3, z4)) EEVAL(Eq(ITE(F, x1, x2), x3), z0, z1, z2) -> c32(EQEXP(eeval[Ite](checkConstrExp(F, T), ITE(F, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(x3, z0, z1, z2)) EEVAL(Eq(ITE(T, x1, x2), x3), z0, z1, z2) -> c32(EQEXP(eeval[Ite](checkConstrExp(T, T), ITE(T, x1, x2), z0, z1, z2), eeval(x3, z0, z1, z2)), EEVAL(x3, z0, z1, z2)) EEVAL(Eq(ITE(ITE(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5), T), ITE(ITE(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(x3, z3, z4, z5)) EEVAL(Eq(ITE(Bsf(z0, z1, z2), x1, x2), x3), z3, z4, z5) -> c32(EQEXP(eeval[Ite](checkConstrExp(eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)), T), ITE(Bsf(z0, z1, z2), x1, x2), z3, z4, z5), eeval(x3, z3, z4, z5)), EEVAL(x3, z3, z4, z5)) EEVAL(Eq(ITE(Var(z0), x1, x2), x3), z1, z2, z3) -> c32(EQEXP(eeval[Ite](checkConstrExp(lookvar(z0, z1, z2), T), ITE(Var(z0), x1, x2), z1, z2, z3), eeval(x3, z1, z2, z3)), EEVAL(x3, z1, z2, z3)) EEVAL(Eq(ITE(x0, x1, x2), Error(z0, z1)), z2, z3, z4) -> c32(EEVAL(Error(z0, z1), z2, z3, z4)) EEVAL(Eq(ITE(Error(z0, z1), x1, x2), x3), z2, z3, z4) -> c32(EEVAL(x3, z2, z3, z4)) EEVAL(Eq(ITE(x0, x1, x2), F), z0, z1, z2) -> c24(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z0, z1, z2), T), ITE(x0, x1, x2), z0, z1, z2), F)) EEVAL(Eq(ITE(x0, x1, x2), F), z0, z1, z2) -> c24(EEVAL(F, z0, z1, z2)) EEVAL(Eq(ITE(x0, x1, x2), T), z0, z1, z2) -> c24(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z0, z1, z2), T), ITE(x0, x1, x2), z0, z1, z2), T)) EEVAL(Eq(ITE(x0, x1, x2), T), z0, z1, z2) -> c24(EEVAL(T, z0, z1, z2)) EEVAL(Eq(ITE(x0, x1, x2), Var(z0)), z1, z2, z3) -> c24(EQEXP(eeval[Ite](checkConstrExp(eeval(x0, z1, z2, z3), T), ITE(x0, x1, x2), z1, z2, z3), lookvar(z0, z1, z2))) EEVAL(Eq(ITE(x0, x1, x2), Var(z0)), z1, z2, z3) -> c24(EEVAL(Var(z0), z1, z2, z3)) K tuples: RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) Defined Rule Symbols: lookname_2, lookname[Ite]_3, !EQ_2, eeval_4, eeval[False][Let]_5, lookbody_2, lookbody[Ite]_3, eeval[False][Let][Let]_6, eeval[Let][Let][Let]_7, eeval[True][Ite]_5, eqExp_2, eeval[Ite]_5, checkConstrExp_2, eeval[Let]_5, lookvar_3, lookvar[Ite]_4, eeval[Let][Let]_6, apply_3, apply[Ite]_4, and_2 Defined Pair Symbols: !EQ'_2, LOOKVAR[ITE]_4, LOOKNAME[ITE]_3, LOOKBODY[ITE]_3, EEVAL[ITE]_5, EEVAL[FALSE][LET]_5, EEVAL[FALSE][LET][LET]_6, EEVAL[LET]_5, EEVAL[LET][LET]_6, RUN[LET]_5, EEVAL[LET][LET][LET]_7, EEVAL_4, EQEXP_2, APPLY_3, EEVAL[FALSE][ITE]_5, RUN[LET][LET]_4, LOOKNAME_2, LOOKBODY_2, LOOKVAR_3, RUN_2 Compound Symbols: c_1, c11_1, c14_1, c16_1, c17_1, c18_1, c19_2, c20_2, c21_2, c22_1, c28_1, c29_1, c30_2, c34, c35, c37_2, c38_1, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c70, c71, c72, c73, c74, c75, c76, c77, c80, c81, c82, c83, c84, c85, c86, c87, c91, c92, c93, c94, c95, c96, c97, c98, c101, c102, c103, c104, c105, c106, c107, c108, c109_1, c33, c40_1, c41_1, c68_1, c69_1, c78_1, c79_1, c88_1, c89_1, c90_1, c99_1, c100_1, c188_1, c1_1, c174_1, c174, c175_1, c175, c189_1, c189, c31_1, c2_1, c32_2, c32_1, c3_1, c36_2, c36_1, c174_2, c175_2, c189_2, c31_2, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c2, c12_1, c13_1, c15_1, c23_1, c24_1