KILLED proof of input_RfjjdT9Psc.trs # AProVE Commit ID: 5b976082cb74a395683ed8cc7acf94bd611ab29f fuhs 20230524 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), 1183 ms] (2) CpxRelTRS (3) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (4) CpxRelTRS (5) RelTrsToTrsProof [UPPER BOUND(ID), 0 ms] (6) CpxTRS (7) CpxTrsToCdtProof [BOTH BOUNDS(ID, ID), 192 ms] (8) CdtProblem (9) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (10) CpxRelTRS (11) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 2 ms] (12) TRS for Loop Detection (13) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (14) CpxRelTRS (15) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (16) typed CpxTrs (17) RelTrsToWeightedTrsProof [UPPER BOUND(ID), 0 ms] (18) CpxWeightedTrs (19) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (20) CpxTypedWeightedTrs (21) CompletionProof [UPPER BOUND(ID), 0 ms] (22) CpxTypedWeightedCompleteTrs (23) CompletionProof [UPPER BOUND(ID), 0 ms] (24) CpxTypedWeightedCompleteTrs (25) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 55 ms] (26) CpxRNTS (27) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (28) CdtProblem (29) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (30) CdtProblem (31) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 13 ms] (32) CdtProblem (33) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (34) CdtProblem (35) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (36) CdtProblem (37) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (38) CdtProblem (39) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 25 ms] (40) CdtProblem (41) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (42) CpxRelTRS (43) RelTrsToTrsProof [UPPER BOUND(ID), 0 ms] (44) CpxTRS (45) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (46) CpxWeightedTrs (47) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (48) CpxTypedWeightedTrs (49) CompletionProof [UPPER BOUND(ID), 0 ms] (50) CpxTypedWeightedCompleteTrs (51) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 31 ms] (52) CpxRNTS (53) CompletionProof [UPPER BOUND(ID), 0 ms] (54) CpxTypedWeightedCompleteTrs (55) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (56) CdtProblem (57) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (58) CdtProblem (59) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (60) CdtProblem (61) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 1 ms] (62) CdtProblem (63) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (64) CdtProblem (65) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (66) CdtProblem (67) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 31 ms] (68) CdtProblem (69) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 2 ms] (70) CdtProblem (71) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (72) CdtProblem (73) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 45 ms] (74) CdtProblem (75) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (76) CdtProblem (77) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (78) CdtProblem (79) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 20 ms] (80) CdtProblem (81) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (82) CdtProblem (83) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (84) CdtProblem (85) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 50 ms] (86) CdtProblem (87) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (88) CdtProblem (89) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (90) CdtProblem (91) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (92) CdtProblem (93) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 23 ms] (94) CdtProblem (95) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (96) CdtProblem (97) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 1 ms] (98) CdtProblem (99) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (100) CdtProblem (101) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 52 ms] (102) CdtProblem (103) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (104) CdtProblem (105) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (106) CdtProblem (107) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 114 ms] (108) CdtProblem (109) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (110) CdtProblem (111) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 10 ms] (112) CdtProblem (113) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 66 ms] (114) CdtProblem (115) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (116) CdtProblem (117) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (118) CdtProblem (119) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 27 ms] (120) CdtProblem (121) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (122) CdtProblem (123) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (124) CdtProblem (125) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 110 ms] (126) CdtProblem (127) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (128) CdtProblem (129) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 6 ms] (130) CdtProblem (131) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 126 ms] (132) CdtProblem (133) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 9 ms] (134) CdtProblem (135) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 20 ms] (136) CdtProblem (137) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 116 ms] (138) CdtProblem (139) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (140) CdtProblem (141) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (142) CdtProblem (143) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 89 ms] (144) CdtProblem (145) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 10 ms] (146) CdtProblem (147) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 251 ms] (148) CdtProblem (149) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 7 ms] (150) CdtProblem (151) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 143 ms] (152) CdtProblem (153) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (154) CdtProblem (155) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 116 ms] (156) CdtProblem (157) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 16 ms] (158) CdtProblem (159) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 68 ms] (160) CdtProblem (161) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (162) CdtProblem (163) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 89 ms] (164) CdtProblem (165) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 18 ms] (166) CdtProblem (167) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 73 ms] (168) CdtProblem (169) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (170) CdtProblem (171) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 112 ms] (172) CdtProblem (173) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 10 ms] (174) CdtProblem (175) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 290 ms] (176) CdtProblem (177) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 34 ms] (178) CdtProblem (179) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 174 ms] (180) CdtProblem (181) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 13 ms] (182) CdtProblem (183) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 170 ms] (184) CdtProblem (185) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 12 ms] (186) CdtProblem (187) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 228 ms] (188) CdtProblem (189) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 7 ms] (190) CdtProblem (191) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 45 ms] (192) CdtProblem (193) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 416 ms] (194) CdtProblem (195) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 45 ms] (196) CdtProblem (197) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 61 ms] (198) CdtProblem (199) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 194 ms] (200) CdtProblem (201) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 4 ms] (202) CdtProblem (203) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 49 ms] (204) CdtProblem (205) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 177 ms] (206) CdtProblem (207) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 15 ms] (208) CdtProblem (209) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 64 ms] (210) 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) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (8) 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 ---------------------------------------- (9) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (10) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: 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 The (relative) TRS S consists of the following rules: !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)) !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 Rewrite Strategy: INNERMOST ---------------------------------------- (11) RelTrsToDecreasingLoopProblemProof (LOWER BOUND(ID)) Transformed a relative TRS into a decreasing-loop problem. ---------------------------------------- (12) Obligation: Analyzing the following TRS for decreasing loops: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: 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 The (relative) TRS S consists of the following rules: !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)) !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 Rewrite Strategy: INNERMOST ---------------------------------------- (13) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (14) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: 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 The (relative) TRS S consists of the following rules: !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)) !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 Rewrite Strategy: INNERMOST ---------------------------------------- (15) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (16) Obligation: Innermost TRS: Rules: 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 !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)) !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 Types: EEVAL :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> Cons:Nil -> Cons:Nil -> Cons:Nil -> c30:c31:c32:c33:c34:c35:c36:c37:c38 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' c30 :: c19 -> c175 -> c30:c31:c32:c33:c34:c35:c36:c37:c38 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' -> c19 lookbody :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> Cons:Nil -> Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' LOOKBODY :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> Cons:Nil -> c175 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' c31 :: c23:c24 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 -> c30:c31:c32:c33:c34:c35:c36:c37:c38 -> c30:c31:c32:c33:c34:c35:c36:c37:c38 EEVAL[TRUE][ITE] :: False:True -> Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> Cons:Nil -> Cons:Nil -> Cons:Nil -> c23:c24 eqExp :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> False:True 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' EQEXP :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c32 :: c23:c24 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 -> c30:c31:c32:c33:c34:c35:c36:c37:c38 -> c30:c31:c32:c33:c34:c35:c36:c37:c38 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' c33 :: c8:c9:c10 -> c30:c31:c32:c33:c34:c35:c36:c37:c38 EEVAL[FALSE][ITE] :: False:True -> Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> Cons:Nil -> Cons:Nil -> Cons:Nil -> c8:c9:c10 False :: False:True F :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' c34 :: c30:c31:c32:c33:c34:c35:c36:c37:c38 T :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' c35 :: c30:c31:c32:c33:c34:c35:c36:c37:c38 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' c36 :: c17:c18 -> 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 -> c30:c31:c32:c33:c34:c35:c36:c37:c38 -> c30:c31:c32:c33:c34:c35:c36:c37:c38 EEVAL[ITE] :: False:True -> Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> Cons:Nil -> Cons:Nil -> Cons:Nil -> c17:c18 checkConstrExp :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> False:True CHECKCONSTREXP :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> 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 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' c37 :: c21 -> c30:c31:c32:c33:c34:c35:c36:c37:c38 -> c30:c31:c32:c33:c34:c35:c36:c37:c38 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' -> c21 Var :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' c38 :: c189 -> c30:c31:c32:c33:c34:c35:c36:c37:c38 LOOKVAR :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> Cons:Nil -> Cons:Nil -> c189 RUN :: Cons:Nil -> Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> c39 Cons :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> Cons:Nil -> Cons:Nil c39 :: c27 -> c175 -> c39 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' -> c27 c40 :: c4:c5:c6:c7 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 AND :: False:True -> False:True -> c4:c5:c6:c7 c41 :: c4:c5:c6:c7 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c42 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c43 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c44 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c45 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c46 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c47 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c48 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c49 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c50 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c51 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c52 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c53 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c54 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c55 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c56 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c57 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c58 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c59 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c60 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c61 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c62 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c63 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c64 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c65 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c66 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c67 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c68 :: c4:c5:c6:c7 -> c:c1:c2:c3 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 !EQ :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> False:True !EQ' :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> c:c1:c2:c3 c69 :: c4:c5:c6:c7 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c70 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c71 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c72 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c73 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c74 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c75 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c76 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c77 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c78 :: c4:c5:c6:c7 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c79 :: c4:c5:c6:c7 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c80 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c81 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c82 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c83 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c84 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c85 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c86 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c87 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c88 :: c4:c5:c6:c7 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 and :: False:True -> False:True -> False:True c89 :: c4:c5:c6:c7 -> c4:c5:c6:c7 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c90 :: c4:c5:c6:c7 -> c4:c5:c6:c7 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c91 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c92 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c93 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c94 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c95 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c96 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c97 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c98 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c99 :: c4:c5:c6:c7 -> c4:c5:c6:c7 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 True :: False:True c100 :: c4:c5:c6:c7 -> c4:c5:c6:c7 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c101 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c102 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c103 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c104 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c105 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c106 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c107 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c108 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c109 :: c:c1:c2:c3 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 c110 :: 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 c111 :: 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 c112 :: 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 c113 :: 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 c114 :: 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 c115 :: 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 c116 :: 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 c117 :: 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 c118 :: 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 c119 :: 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 c120 :: 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 c121 :: 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 c122 :: 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 c123 :: 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 c124 :: 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 c125 :: 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 c126 :: 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 c127 :: 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 c128 :: 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 c129 :: 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 c130 :: 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 c131 :: 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 c132 :: 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 c133 :: 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 c134 :: 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 c135 :: 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 c136 :: 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 c137 :: 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 c138 :: 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 c139 :: 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 c140 :: 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 c141 :: 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 c142 :: 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 c143 :: 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 c144 :: 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 c145 :: 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 c146 :: 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 c147 :: 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 c148 :: 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 c149 :: 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 c150 :: 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 c151 :: 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 c152 :: 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 c153 :: 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 c154 :: 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 c155 :: 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 c156 :: 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 c157 :: 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 c158 :: 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 c159 :: 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 c160 :: 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 c161 :: 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 c162 :: 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 c163 :: 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 c164 :: 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 c165 :: 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 c166 :: 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 c167 :: 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 c168 :: 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 c169 :: 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 c170 :: 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 c171 :: 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 c172 :: 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 c173 :: 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 LOOKNAME :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> Cons:Nil -> c174 c174 :: c13:c14 -> c:c1:c2:c3 -> c174 LOOKNAME[ITE] :: False:True -> Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> Cons:Nil -> c13:c14 c175 :: c15:c16 -> c:c1:c2:c3 -> c175 LOOKBODY[ITE] :: False:True -> Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> Cons:Nil -> c15:c16 GETVAR :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> c176 c176 :: c176 GETIFTRUE :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> c177 c177 :: c177 GETIFGUARD :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> c178 c178 :: c178 GETIFFALSE :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> c179 c179 :: c179 GETFUNCNAME :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> c180 c180 :: c180 GETFUNCEXP :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> c181 c181 :: c181 GETEQSECOND :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> c182 c182 :: c182 GETEQFIRST :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> c183 c183 :: c183 GETCONST :: Cst -> c184 Cst :: getConst -> Cst c184 :: c184 GETBSFSECONDTERM :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> c185 c185 :: c185 GETBSFOP :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> c186 c186 :: c186 GETBSFFIRSTTERM :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> c187 c187 :: c187 APPLY :: getBsfOp -> Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> c188 c188 :: c25:c26 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 -> c188 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' -> c25:c26 c189 :: c11:c12 -> c:c1:c2:c3 -> c189 LOOKVAR[ITE] :: False:True -> Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> Cons:Nil -> Cons:Nil -> c11:c12 EQOPS :: a -> b -> c190 c190 :: c190 S :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' c :: c:c1:c2:c3 -> c:c1:c2:c3 0' :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' c1 :: c:c1:c2:c3 c2 :: c:c1:c2:c3 c3 :: c:c1:c2:c3 c4 :: c4:c5:c6:c7 c5 :: c4:c5:c6:c7 c6 :: c4:c5:c6:c7 c7 :: c4:c5:c6:c7 c8 :: c23:c24 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 -> c30:c31:c32:c33:c34:c35:c36:c37:c38 -> c8:c9:c10 c9 :: c23:c24 -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 -> c30:c31:c32:c33:c34:c35:c36:c37:c38 -> c8:c9:c10 c10 :: c19 -> c175 -> c8:c9:c10 c11 :: c189 -> c11:c12 c12 :: c11:c12 c13 :: c13:c14 c14 :: c174 -> c13:c14 c15 :: c15:c16 c16 :: c175 -> c15:c16 c17 :: c30:c31:c32:c33:c34:c35:c36:c37:c38 -> c17:c18 c18 :: c30:c31:c32:c33:c34:c35:c36:c37:c38 -> c17:c18 c19 :: c20 -> c174 -> c19 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' -> c20 lookname :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> Cons:Nil -> Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' c20 :: c29 -> c30:c31:c32:c33:c34:c35:c36:c37:c38 -> c20 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' -> c29 c21 :: c22 -> c30:c31:c32:c33:c34:c35:c36:c37:c38 -> c21 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' -> c22 c22 :: c188 -> c22 c23 :: c23:c24 c24 :: c23:c24 c25 :: c25:c26 c26 :: c25:c26 c27 :: c28 -> c174 -> c27 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' -> c28 c28 :: c30:c31:c32:c33:c34:c35:c36:c37:c38 -> c28 Nil :: Cons:Nil c29 :: c30:c31:c32:c33:c34:c35:c36:c37:c38 -> c29 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' 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' 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' 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' 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' 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' 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' 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] :: 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' 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' 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' 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' 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' run :: Cons:Nil -> Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' -> 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 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' eqOps :: c -> d -> False:True hole_c30:c31:c32:c33:c34:c35:c36:c37:c381_191 :: c30:c31:c32:c33:c34:c35:c36:c37:c38 hole_Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0'2_191 :: Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' hole_Cons:Nil3_191 :: Cons:Nil hole_c194_191 :: c19 hole_c1755_191 :: c175 hole_c23:c246_191 :: c23:c24 hole_c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c1097_191 :: c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 hole_False:True8_191 :: False:True hole_c8:c9:c109_191 :: c8:c9:c10 hole_c17:c1810_191 :: c17:c18 hole_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:c17311_191 :: 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 hole_getBsfOp12_191 :: getBsfOp hole_c2113_191 :: c21 hole_c18914_191 :: c189 hole_c3915_191 :: c39 hole_c2716_191 :: c27 hole_c4:c5:c6:c717_191 :: c4:c5:c6:c7 hole_c:c1:c2:c318_191 :: c:c1:c2:c3 hole_c17419_191 :: c174 hole_c13:c1420_191 :: c13:c14 hole_c15:c1621_191 :: c15:c16 hole_c17622_191 :: c176 hole_c17723_191 :: c177 hole_c17824_191 :: c178 hole_c17925_191 :: c179 hole_c18026_191 :: c180 hole_c18127_191 :: c181 hole_c18228_191 :: c182 hole_c18329_191 :: c183 hole_c18430_191 :: c184 hole_Cst31_191 :: Cst hole_getConst32_191 :: getConst hole_c18533_191 :: c185 hole_c18634_191 :: c186 hole_c18735_191 :: c187 hole_c18836_191 :: c188 hole_c25:c2637_191 :: c25:c26 hole_c11:c1238_191 :: c11:c12 hole_c19039_191 :: c190 hole_a40_191 :: a hole_b41_191 :: b hole_c2042_191 :: c20 hole_c2943_191 :: c29 hole_c2244_191 :: c22 hole_c2845_191 :: c28 hole_c46_191 :: c hole_d47_191 :: d gen_c30:c31:c32:c33:c34:c35:c36:c37:c3848_191 :: Nat -> c30:c31:c32:c33:c34:c35:c36:c37:c38 gen_Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0'49_191 :: Nat -> Fun:Eq:Error:F:T:ITE':Bsf:Var:S:0' gen_Cons:Nil50_191 :: Nat -> Cons:Nil gen_c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c10951_191 :: Nat -> c40:c41: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:c69:c70:c71:c72:c73:c74:c75:c76:c77:c78:c79:c80:c81:c82:c83:c84:c85:c86:c87:c88:c89:c90:c91:c92:c93:c94:c95:c96:c97:c98:c99:c100:c101:c102:c103:c104:c105:c106:c107:c108:c109 gen_c:c1:c2:c352_191 :: Nat -> c:c1:c2:c3 ---------------------------------------- (17) RelTrsToWeightedTrsProof (UPPER BOUND(ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (18) 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 ---------------------------------------- (19) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (20) 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 ---------------------------------------- (21) 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 ---------------------------------------- (22) 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 ---------------------------------------- (23) 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 ---------------------------------------- (24) 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 ---------------------------------------- (25) 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 ---------------------------------------- (26) 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. ---------------------------------------- (27) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (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)) !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 ---------------------------------------- (29) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 91 trailing nodes: CHECKCONSTREXP(Var(z0), T) -> c168 CHECKCONSTREXP(Eq(z0, z1), Error(z2, z3)) -> c142 CHECKCONSTREXP(ITE(z0, z1, z2), T) -> c152 CHECKCONSTREXP(Fun(z0, z1), Eq(z2, z3)) -> c138 CHECKCONSTREXP(Fun(z0, z1), T) -> c136 !EQ'(0, S(z0)) -> c1 CHECKCONSTREXP(Error(z0, z1), F) -> c111 CHECKCONSTREXP(Eq(z0, z1), F) -> c143 CHECKCONSTREXP(ITE(z0, z1, z2), Var(z3)) -> c157 CHECKCONSTREXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c153 GETIFTRUE(ITE(z0, z1, z2)) -> c177 CHECKCONSTREXP(Var(z0), Bsf(z1, z2, z3)) -> c172 CHECKCONSTREXP(Error(z0, z1), Eq(z2, z3)) -> c114 !EQ'(S(z0), 0) -> c2 CHECKCONSTREXP(Var(z0), Var(z1)) -> c173 GETIFGUARD(ITE(z0, z1, z2)) -> c178 EQOPS(z0, z1) -> c190 CHECKCONSTREXP(F, Bsf(z0, z1, z2)) -> c124 GETFUNCNAME(Fun(z0, z1)) -> c180 CHECKCONSTREXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c140 CHECKCONSTREXP(Error(z0, z1), Error(z2, z3)) -> c110 CHECKCONSTREXP(Error(z0, z1), T) -> c112 LOOKVAR[ITE](True, z0, z1, Cons(z2, z3)) -> c12 CHECKCONSTREXP(T, F) -> c127 CHECKCONSTREXP(T, Var(z0)) -> c133 CHECKCONSTREXP(F, T) -> c120 GETFUNCEXP(Fun(z0, z1)) -> c181 CHECKCONSTREXP(Var(z0), F) -> c167 CHECKCONSTREXP(Eq(z0, z1), Fun(z2, z3)) -> c145 AND(True, True) -> c7 CHECKCONSTREXP(Eq(z0, z1), Var(z2)) -> c149 CHECKCONSTREXP(F, Var(z0)) -> c125 APPLY[ITE](False, z0, z1, z2) -> c25 LOOKBODY[ITE](True, z0, Cons(Fun(z1, z2), z3)) -> c15 GETIFFALSE(ITE(z0, z1, z2)) -> c179 CHECKCONSTREXP(F, ITE(z0, z1, z2)) -> c123 CHECKCONSTREXP(T, Bsf(z0, z1, z2)) -> c132 CHECKCONSTREXP(T, Fun(z0, z1)) -> c129 GETEQSECOND(Eq(z0, z1)) -> c182 LOOKNAME[ITE](True, z0, Cons(Fun(z1, z2), z3)) -> c13 AND(True, False) -> c5 GETBSFOP(Bsf(z0, z1, z2)) -> c186 CHECKCONSTREXP(Var(z0), Fun(z1, z2)) -> c169 CHECKCONSTREXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c116 GETCONST(Cst(z0)) -> c184 CHECKCONSTREXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c147 CHECKCONSTREXP(Fun(z0, z1), Error(z2, z3)) -> c134 CHECKCONSTREXP(Var(z0), Eq(z1, z2)) -> c170 CHECKCONSTREXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c158 CHECKCONSTREXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c148 APPLY[ITE](True, z0, z1, z2) -> c26 CHECKCONSTREXP(Eq(z0, z1), Eq(z2, z3)) -> c146 CHECKCONSTREXP(F, Error(z0, z1)) -> c118 CHECKCONSTREXP(Bsf(z0, z1, z2), Var(z3)) -> c165 CHECKCONSTREXP(T, Eq(z0, z1)) -> c130 CHECKCONSTREXP(Fun(z0, z1), F) -> c135 GETBSFSECONDTERM(Bsf(z0, z1, z2)) -> c185 EEVAL[TRUE][ITE](False, z0, z1, z2, z3) -> c23 CHECKCONSTREXP(Bsf(z0, z1, z2), F) -> c159 CHECKCONSTREXP(Bsf(z0, z1, z2), T) -> c160 CHECKCONSTREXP(Error(z0, z1), Fun(z2, z3)) -> c113 CHECKCONSTREXP(F, Eq(z0, z1)) -> c122 CHECKCONSTREXP(F, Fun(z0, z1)) -> c121 CHECKCONSTREXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c162 CHECKCONSTREXP(T, ITE(z0, z1, z2)) -> c131 CHECKCONSTREXP(T, Error(z0, z1)) -> c126 CHECKCONSTREXP(ITE(z0, z1, z2), Error(z3, z4)) -> c150 CHECKCONSTREXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c163 GETVAR(Var(z0)) -> c176 CHECKCONSTREXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c161 CHECKCONSTREXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c139 CHECKCONSTREXP(Fun(z0, z1), Var(z2)) -> c141 GETEQFIRST(Eq(z0, z1)) -> c183 CHECKCONSTREXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c154 !EQ'(0, 0) -> c3 CHECKCONSTREXP(Var(z0), Error(z1, z2)) -> c166 CHECKCONSTREXP(Eq(z0, z1), T) -> c144 CHECKCONSTREXP(Error(z0, z1), ITE(z2, z3, z4)) -> c115 GETBSFFIRSTTERM(Bsf(z0, z1, z2)) -> c187 CHECKCONSTREXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c156 CHECKCONSTREXP(Fun(z0, z1), Fun(z2, z3)) -> c137 CHECKCONSTREXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c155 EEVAL[TRUE][ITE](True, z0, z1, z2, z3) -> c24 CHECKCONSTREXP(ITE(z0, z1, z2), F) -> c151 CHECKCONSTREXP(T, T) -> c128 CHECKCONSTREXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c164 CHECKCONSTREXP(F, F) -> c119 AND(False, False) -> c4 CHECKCONSTREXP(Error(z0, z1), Var(z2)) -> c117 CHECKCONSTREXP(Var(z0), ITE(z1, z2, z3)) -> c171 AND(False, True) -> c6 ---------------------------------------- (30) 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 ---------------------------------------- (31) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 22 trailing tuple parts ---------------------------------------- (32) 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 ---------------------------------------- (33) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (34) 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 ---------------------------------------- (35) 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))) ---------------------------------------- (36) 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 ---------------------------------------- (37) 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)) ---------------------------------------- (38) 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 ---------------------------------------- (39) 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 ---------------------------------------- (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)) 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 ---------------------------------------- (41) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (42) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: 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)) The (relative) TRS S consists of the following rules: !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[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(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 Rewrite Strategy: INNERMOST ---------------------------------------- (43) RelTrsToTrsProof (UPPER BOUND(ID)) transformed relative TRS to TRS ---------------------------------------- (44) Obligation: The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: 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)) !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[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(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 S is empty. Rewrite Strategy: INNERMOST ---------------------------------------- (45) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (46) 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(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) [1] EEVAL(F, z0, z1, z2) -> c34 [1] EEVAL(T, z0, z1, z2) -> c35 [1] 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)) [1] EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) [1] EQEXP(Error(z0, z1), F) -> c42 [1] EQEXP(Error(z0, z1), T) -> c43 [1] EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 [1] EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 [1] EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 [1] EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 [1] EQEXP(Error(z0, z1), Var(z2)) -> c48 [1] EQEXP(F, Error(z0, z1)) -> c49 [1] EQEXP(F, F) -> c50 [1] EQEXP(F, T) -> c51 [1] EQEXP(F, Fun(z0, z1)) -> c52 [1] EQEXP(F, Eq(z0, z1)) -> c53 [1] EQEXP(F, ITE(z0, z1, z2)) -> c54 [1] EQEXP(F, Bsf(z0, z1, z2)) -> c55 [1] EQEXP(F, Var(z0)) -> c56 [1] EQEXP(T, Error(z0, z1)) -> c57 [1] EQEXP(T, F) -> c58 [1] EQEXP(T, T) -> c59 [1] EQEXP(T, Fun(z0, z1)) -> c60 [1] EQEXP(T, Eq(z0, z1)) -> c61 [1] EQEXP(T, ITE(z0, z1, z2)) -> c62 [1] EQEXP(T, Bsf(z0, z1, z2)) -> c63 [1] EQEXP(T, Var(z0)) -> c64 [1] EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 [1] EQEXP(Fun(z0, z1), F) -> c66 [1] EQEXP(Fun(z0, z1), T) -> c67 [1] EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 [1] EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 [1] EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 [1] EQEXP(Fun(z0, z1), Var(z2)) -> c73 [1] EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 [1] EQEXP(Eq(z0, z1), F) -> c75 [1] EQEXP(Eq(z0, z1), T) -> c76 [1] EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 [1] EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 [1] EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 [1] EQEXP(Eq(z0, z1), Var(z2)) -> c82 [1] EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 [1] EQEXP(ITE(z0, z1, z2), F) -> c84 [1] EQEXP(ITE(z0, z1, z2), T) -> c85 [1] EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 [1] EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 [1] EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 [1] EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 [1] EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 [1] EQEXP(Bsf(z0, z1, z2), F) -> c94 [1] EQEXP(Bsf(z0, z1, z2), T) -> c95 [1] EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 [1] EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 [1] EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 [1] EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 [1] EQEXP(Var(z0), Error(z1, z2)) -> c102 [1] EQEXP(Var(z0), F) -> c103 [1] EQEXP(Var(z0), T) -> c104 [1] EQEXP(Var(z0), Fun(z1, z2)) -> c105 [1] EQEXP(Var(z0), Eq(z1, z2)) -> c106 [1] EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 [1] EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 [1] EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) [1] LOOKNAME(z0, Cons(Fun(z1, z2), z3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) [1] LOOKBODY(z0, Cons(Fun(z1, z2), z3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) [1] LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) [1] EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) [1] EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) [1] EEVAL(Error(z0, z1), z2, z3, z4) -> c33 [1] 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)) [1] EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) [1] EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) [1] EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) [1] EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) [1] EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) [1] EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) [1] EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) [1] EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) [1] EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) [1] EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) [1] EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) [1] APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) [1] !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) [0] LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) [0] LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) [0] LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) [0] EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) [0] EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) [0] 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)) [0] 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)) [0] 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)) [0] EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) [0] RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) [0] EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) [0] EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) [0] RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) [0] RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) [0] 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)))) [0] EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4))) [0] lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) [0] lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 [0] lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) [0] !EQ(S(z0), S(z1)) -> !EQ(z0, z1) [0] !EQ(0, S(z0)) -> False [0] !EQ(S(z0), 0) -> False [0] !EQ(0, 0) -> True [0] eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) [0] 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) [0] eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) [0] eeval(F, z0, z1, z2) -> F [0] eeval(T, z0, z1, z2) -> T [0] eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) [0] eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) [0] eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) [0] eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) [0] lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) [0] lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 [0] lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) [0] 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)) [0] eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) [0] eeval[True][Ite](False, z0, z1, z2, z3) -> F [0] eeval[True][Ite](True, z0, z1, z2, z3) -> T [0] eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) [0] eqExp(Error(z0, z1), F) -> False [0] eqExp(Error(z0, z1), T) -> False [0] eqExp(Error(z0, z1), Fun(z2, z3)) -> False [0] eqExp(Error(z0, z1), Eq(z2, z3)) -> False [0] eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False [0] eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False [0] eqExp(Error(z0, z1), Var(z2)) -> False [0] eqExp(F, Error(z0, z1)) -> False [0] eqExp(F, F) -> True [0] eqExp(F, T) -> False [0] eqExp(F, Fun(z0, z1)) -> False [0] eqExp(F, Eq(z0, z1)) -> False [0] eqExp(F, ITE(z0, z1, z2)) -> False [0] eqExp(F, Bsf(z0, z1, z2)) -> False [0] eqExp(F, Var(z0)) -> False [0] eqExp(T, Error(z0, z1)) -> False [0] eqExp(T, F) -> False [0] eqExp(T, T) -> True [0] eqExp(T, Fun(z0, z1)) -> False [0] eqExp(T, Eq(z0, z1)) -> False [0] eqExp(T, ITE(z0, z1, z2)) -> False [0] eqExp(T, Bsf(z0, z1, z2)) -> False [0] eqExp(T, Var(z0)) -> False [0] eqExp(Fun(z0, z1), Error(z2, z3)) -> False [0] eqExp(Fun(z0, z1), F) -> False [0] eqExp(Fun(z0, z1), T) -> False [0] eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) [0] eqExp(Fun(z0, z1), Eq(z2, z3)) -> False [0] eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False [0] eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False [0] eqExp(Fun(z0, z1), Var(z2)) -> False [0] eqExp(Eq(z0, z1), Error(z2, z3)) -> False [0] eqExp(Eq(z0, z1), F) -> False [0] eqExp(Eq(z0, z1), T) -> False [0] eqExp(Eq(z0, z1), Fun(z2, z3)) -> False [0] eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) [0] eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False [0] eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False [0] eqExp(Eq(z0, z1), Var(z2)) -> False [0] eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False [0] eqExp(ITE(z0, z1, z2), F) -> False [0] eqExp(ITE(z0, z1, z2), T) -> False [0] eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False [0] eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False [0] eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) [0] eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False [0] eqExp(ITE(z0, z1, z2), Var(z3)) -> False [0] eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False [0] eqExp(Bsf(z0, z1, z2), F) -> False [0] eqExp(Bsf(z0, z1, z2), T) -> False [0] eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False [0] eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False [0] eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False [0] eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) [0] eqExp(Bsf(z0, z1, z2), Var(z3)) -> False [0] eqExp(Var(z0), Error(z1, z2)) -> False [0] eqExp(Var(z0), F) -> False [0] eqExp(Var(z0), T) -> False [0] eqExp(Var(z0), Fun(z1, z2)) -> False [0] eqExp(Var(z0), Eq(z1, z2)) -> False [0] eqExp(Var(z0), ITE(z1, z2, z3)) -> False [0] eqExp(Var(z0), Bsf(z1, z2, z3)) -> False [0] eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) [0] eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) [0] eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) [0] checkConstrExp(Error(z0, z1), T) -> False [0] checkConstrExp(F, T) -> False [0] checkConstrExp(T, T) -> True [0] checkConstrExp(Fun(z0, z1), T) -> False [0] checkConstrExp(Eq(z0, z1), T) -> False [0] checkConstrExp(ITE(z0, z1, z2), T) -> False [0] checkConstrExp(Bsf(z0, z1, z2), T) -> False [0] checkConstrExp(Var(z0), T) -> False [0] 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)) [0] lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) [0] lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) [0] lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 [0] eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) [0] apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) [0] apply[Ite](False, z0, z1, z2) -> F [0] apply[Ite](True, z0, z1, z2) -> T [0] and(False, False) -> False [0] and(True, False) -> False [0] and(False, True) -> False [0] and(True, True) -> True [0] Rewrite Strategy: INNERMOST ---------------------------------------- (47) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (48) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: EEVAL(Fun(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) [1] EEVAL(F, z0, z1, z2) -> c34 [1] EEVAL(T, z0, z1, z2) -> c35 [1] 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)) [1] EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) [1] EQEXP(Error(z0, z1), F) -> c42 [1] EQEXP(Error(z0, z1), T) -> c43 [1] EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 [1] EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 [1] EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 [1] EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 [1] EQEXP(Error(z0, z1), Var(z2)) -> c48 [1] EQEXP(F, Error(z0, z1)) -> c49 [1] EQEXP(F, F) -> c50 [1] EQEXP(F, T) -> c51 [1] EQEXP(F, Fun(z0, z1)) -> c52 [1] EQEXP(F, Eq(z0, z1)) -> c53 [1] EQEXP(F, ITE(z0, z1, z2)) -> c54 [1] EQEXP(F, Bsf(z0, z1, z2)) -> c55 [1] EQEXP(F, Var(z0)) -> c56 [1] EQEXP(T, Error(z0, z1)) -> c57 [1] EQEXP(T, F) -> c58 [1] EQEXP(T, T) -> c59 [1] EQEXP(T, Fun(z0, z1)) -> c60 [1] EQEXP(T, Eq(z0, z1)) -> c61 [1] EQEXP(T, ITE(z0, z1, z2)) -> c62 [1] EQEXP(T, Bsf(z0, z1, z2)) -> c63 [1] EQEXP(T, Var(z0)) -> c64 [1] EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 [1] EQEXP(Fun(z0, z1), F) -> c66 [1] EQEXP(Fun(z0, z1), T) -> c67 [1] EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 [1] EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 [1] EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 [1] EQEXP(Fun(z0, z1), Var(z2)) -> c73 [1] EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 [1] EQEXP(Eq(z0, z1), F) -> c75 [1] EQEXP(Eq(z0, z1), T) -> c76 [1] EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 [1] EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 [1] EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 [1] EQEXP(Eq(z0, z1), Var(z2)) -> c82 [1] EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 [1] EQEXP(ITE(z0, z1, z2), F) -> c84 [1] EQEXP(ITE(z0, z1, z2), T) -> c85 [1] EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 [1] EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 [1] EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 [1] EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 [1] EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 [1] EQEXP(Bsf(z0, z1, z2), F) -> c94 [1] EQEXP(Bsf(z0, z1, z2), T) -> c95 [1] EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 [1] EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 [1] EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 [1] EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 [1] EQEXP(Var(z0), Error(z1, z2)) -> c102 [1] EQEXP(Var(z0), F) -> c103 [1] EQEXP(Var(z0), T) -> c104 [1] EQEXP(Var(z0), Fun(z1, z2)) -> c105 [1] EQEXP(Var(z0), Eq(z1, z2)) -> c106 [1] EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 [1] EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 [1] EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) [1] LOOKNAME(z0, Cons(Fun(z1, z2), z3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) [1] LOOKBODY(z0, Cons(Fun(z1, z2), z3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) [1] LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) [1] EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) [1] EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) [1] EEVAL(Error(z0, z1), z2, z3, z4) -> c33 [1] 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)) [1] EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) [1] EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) [1] EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) [1] EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) [1] EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) [1] EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) [1] EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) [1] EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) [1] EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) [1] EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) [1] EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) [1] APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) [1] !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) [0] LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) [0] LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) [0] LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) [0] EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) [0] EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) [0] 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)) [0] 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)) [0] 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)) [0] EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) [0] RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) [0] EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) [0] EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) [0] RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) [0] RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) [0] 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)))) [0] EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4))) [0] lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) [0] lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 [0] lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) [0] !EQ(S(z0), S(z1)) -> !EQ(z0, z1) [0] !EQ(0, S(z0)) -> False [0] !EQ(S(z0), 0) -> False [0] !EQ(0, 0) -> True [0] eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) [0] 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) [0] eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) [0] eeval(F, z0, z1, z2) -> F [0] eeval(T, z0, z1, z2) -> T [0] eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) [0] eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) [0] eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) [0] eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) [0] lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) [0] lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 [0] lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) [0] 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)) [0] eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) [0] eeval[True][Ite](False, z0, z1, z2, z3) -> F [0] eeval[True][Ite](True, z0, z1, z2, z3) -> T [0] eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) [0] eqExp(Error(z0, z1), F) -> False [0] eqExp(Error(z0, z1), T) -> False [0] eqExp(Error(z0, z1), Fun(z2, z3)) -> False [0] eqExp(Error(z0, z1), Eq(z2, z3)) -> False [0] eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False [0] eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False [0] eqExp(Error(z0, z1), Var(z2)) -> False [0] eqExp(F, Error(z0, z1)) -> False [0] eqExp(F, F) -> True [0] eqExp(F, T) -> False [0] eqExp(F, Fun(z0, z1)) -> False [0] eqExp(F, Eq(z0, z1)) -> False [0] eqExp(F, ITE(z0, z1, z2)) -> False [0] eqExp(F, Bsf(z0, z1, z2)) -> False [0] eqExp(F, Var(z0)) -> False [0] eqExp(T, Error(z0, z1)) -> False [0] eqExp(T, F) -> False [0] eqExp(T, T) -> True [0] eqExp(T, Fun(z0, z1)) -> False [0] eqExp(T, Eq(z0, z1)) -> False [0] eqExp(T, ITE(z0, z1, z2)) -> False [0] eqExp(T, Bsf(z0, z1, z2)) -> False [0] eqExp(T, Var(z0)) -> False [0] eqExp(Fun(z0, z1), Error(z2, z3)) -> False [0] eqExp(Fun(z0, z1), F) -> False [0] eqExp(Fun(z0, z1), T) -> False [0] eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) [0] eqExp(Fun(z0, z1), Eq(z2, z3)) -> False [0] eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False [0] eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False [0] eqExp(Fun(z0, z1), Var(z2)) -> False [0] eqExp(Eq(z0, z1), Error(z2, z3)) -> False [0] eqExp(Eq(z0, z1), F) -> False [0] eqExp(Eq(z0, z1), T) -> False [0] eqExp(Eq(z0, z1), Fun(z2, z3)) -> False [0] eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) [0] eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False [0] eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False [0] eqExp(Eq(z0, z1), Var(z2)) -> False [0] eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False [0] eqExp(ITE(z0, z1, z2), F) -> False [0] eqExp(ITE(z0, z1, z2), T) -> False [0] eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False [0] eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False [0] eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) [0] eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False [0] eqExp(ITE(z0, z1, z2), Var(z3)) -> False [0] eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False [0] eqExp(Bsf(z0, z1, z2), F) -> False [0] eqExp(Bsf(z0, z1, z2), T) -> False [0] eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False [0] eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False [0] eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False [0] eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) [0] eqExp(Bsf(z0, z1, z2), Var(z3)) -> False [0] eqExp(Var(z0), Error(z1, z2)) -> False [0] eqExp(Var(z0), F) -> False [0] eqExp(Var(z0), T) -> False [0] eqExp(Var(z0), Fun(z1, z2)) -> False [0] eqExp(Var(z0), Eq(z1, z2)) -> False [0] eqExp(Var(z0), ITE(z1, z2, z3)) -> False [0] eqExp(Var(z0), Bsf(z1, z2, z3)) -> False [0] eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) [0] eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) [0] eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) [0] checkConstrExp(Error(z0, z1), T) -> False [0] checkConstrExp(F, T) -> False [0] checkConstrExp(T, T) -> True [0] checkConstrExp(Fun(z0, z1), T) -> False [0] checkConstrExp(Eq(z0, z1), T) -> False [0] checkConstrExp(ITE(z0, z1, z2), T) -> False [0] checkConstrExp(Bsf(z0, z1, z2), T) -> False [0] checkConstrExp(Var(z0), T) -> False [0] 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)) [0] lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) [0] lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) [0] lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 [0] eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) [0] apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) [0] apply[Ite](False, z0, z1, z2) -> F [0] apply[Ite](True, z0, z1, z2) -> T [0] and(False, False) -> False [0] and(True, False) -> False [0] and(False, True) -> False [0] and(True, True) -> True [0] The TRS has the following type information: EEVAL :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> c30:c34:c35:c37:c38:c31:c32:c33:c36 Fun :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] c30 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 -> c175 -> c30:c34:c35:c37:c38:c31:c32:c33:c36 EEVAL[FALSE][LET] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 lookbody :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] LOOKBODY :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> c175 F :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] c34 :: c30:c34:c35:c37:c38:c31:c32:c33:c36 T :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] c35 :: c30:c34:c35:c37:c38:c31:c32:c33:c36 Bsf :: a -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] c37 :: c21 -> c30:c34:c35:c37:c38:c31:c32:c33:c36 -> c30:c34:c35:c37:c38:c31:c32:c33:c36 EEVAL[LET] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> c21 eeval :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] Var :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] c38 :: c189 -> c30:c34:c35:c37:c38:c31:c32:c33:c36 LOOKVAR :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Cons:Nil -> c189 EQEXP :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 Error :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] c42 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c43 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c44 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 Eq :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] c45 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 ITE :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] c46 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c47 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c48 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c49 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c50 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c51 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c52 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c53 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c54 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c55 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c56 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c57 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c58 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c59 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c60 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c61 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c62 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c63 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c64 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c65 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c66 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c67 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c70 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c71 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c72 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c73 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c74 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c75 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c76 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c77 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c80 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c81 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c82 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c83 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c84 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c85 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c86 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c87 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c91 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c92 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c93 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c94 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c95 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c96 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c97 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c98 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c101 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c102 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c103 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c104 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c105 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c106 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c107 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c108 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c109 :: c -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 !EQ' :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> c LOOKNAME :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 Cons :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Cons:Nil c174 :: c14 -> c -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 LOOKNAME[ITE] :: False:True -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> c14 !EQ :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> False:True c175 :: c16 -> c -> c175 LOOKBODY[ITE] :: False:True -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> c16 c189 :: c11 -> c -> c189 LOOKVAR[ITE] :: False:True -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Cons:Nil -> c11 c31 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 -> c30:c34:c35:c37:c38:c31:c32:c33:c36 -> c30:c34:c35:c37:c38:c31:c32:c33:c36 c32 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 -> c30:c34:c35:c37:c38:c31:c32:c33:c36 -> c30:c34:c35:c37:c38:c31:c32:c33:c36 c33 :: c30:c34:c35:c37:c38:c31:c32:c33:c36 c36 :: c17:c18 -> c30:c34:c35:c37:c38:c31:c32:c33:c36 -> c30:c34:c35:c37:c38:c31:c32:c33:c36 EEVAL[ITE] :: False:True -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> c17:c18 checkConstrExp :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> False:True c40 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c41 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c68 :: c -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c69 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c78 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c79 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c88 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c89 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c90 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c99 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c100 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 APPLY :: a -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> c188 c188 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 -> c188 S :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] c :: c -> c False :: False:True c11 :: c189 -> c11 c14 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 -> c14 c16 :: c175 -> c16 c17 :: c30:c34:c35:c37:c38:c31:c32:c33:c36 -> c17:c18 True :: False:True c18 :: c30:c34:c35:c37:c38:c31:c32:c33:c36 -> c17:c18 c19 :: c20 -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 EEVAL[FALSE][LET][LET] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> c20 lookname :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] c20 :: c29 -> c30:c34:c35:c37:c38:c31:c32:c33:c36 -> c20 EEVAL[LET][LET][LET] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> c29 c21 :: c22 -> c30:c34:c35:c37:c38:c31:c32:c33:c36 -> c21 EEVAL[LET][LET] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> c22 c22 :: c188 -> c22 RUN[LET] :: Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c28 :: c30:c34:c35:c37:c38:c31:c32:c33:c36 -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 Nil :: Cons:Nil c29 :: c30:c34:c35:c37:c38:c31:c32:c33:c36 -> c29 EEVAL[FALSE][ITE] :: False:True -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 c1 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 RUN[LET][LET] :: Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 RUN :: Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1 lookname[Ite] :: False:True -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] 0 :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] eeval[False][Let] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] eeval[True][Ite] :: False:True -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] eqExp :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> False:True eeval[False][Ite] :: False:True -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] eeval[Ite] :: False:True -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] eeval[Let] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] lookvar :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] eeval[False][Let][Let] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] lookbody[Ite] :: False:True -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] eeval[Let][Let][Let] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] and :: False:True -> False:True -> False:True eeval[Let][Let] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] lookvar[Ite] :: False:True -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] apply :: a -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] apply[Ite] :: False:True -> a -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite] Rewrite Strategy: INNERMOST ---------------------------------------- (49) 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] 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] 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[FALSE][ITE](v0, v1, v2, v3, v4) -> null_EEVAL[FALSE][ITE] [0] RUN[LET][LET](v0, v1, v2, v3) -> null_RUN[LET][LET] [0] RUN(v0, v1) -> null_RUN [0] lookname(v0, v1) -> null_lookname [0] lookname[Ite](v0, v1, v2) -> null_lookname[Ite] [0] !EQ(v0, v1) -> null_!EQ [0] eeval(v0, v1, v2, v3) -> null_eeval [0] eeval[False][Let](v0, v1, v2, v3, v4) -> null_eeval[False][Let] [0] lookbody(v0, v1) -> null_lookbody [0] lookbody[Ite](v0, v1, v2) -> null_lookbody[Ite] [0] eeval[False][Let][Let](v0, v1, v2, v3, v4, v5) -> null_eeval[False][Let][Let] [0] eeval[Let][Let][Let](v0, v1, v2, v3, v4, v5, v6) -> null_eeval[Let][Let][Let] [0] eeval[True][Ite](v0, v1, v2, v3, v4) -> null_eeval[True][Ite] [0] eqExp(v0, v1) -> null_eqExp [0] eeval[Ite](v0, v1, v2, v3, v4) -> null_eeval[Ite] [0] checkConstrExp(v0, v1) -> null_checkConstrExp [0] eeval[Let](v0, v1, v2, v3, v4) -> null_eeval[Let] [0] lookvar(v0, v1, v2) -> null_lookvar [0] lookvar[Ite](v0, v1, v2, v3) -> null_lookvar[Ite] [0] eeval[Let][Let](v0, v1, v2, v3, v4, v5) -> null_eeval[Let][Let] [0] apply(v0, v1, v2) -> null_apply [0] apply[Ite](v0, v1, v2, v3) -> null_apply[Ite] [0] and(v0, v1) -> null_and [0] EEVAL(v0, v1, v2, v3) -> null_EEVAL [0] EQEXP(v0, v1) -> null_EQEXP [0] LOOKNAME(v0, v1) -> null_LOOKNAME [0] LOOKBODY(v0, v1) -> null_LOOKBODY [0] LOOKVAR(v0, v1, v2) -> null_LOOKVAR [0] And the following fresh constants: null_!EQ', null_LOOKVAR[ITE], null_LOOKNAME[ITE], null_LOOKBODY[ITE], null_EEVAL[ITE], null_EEVAL[FALSE][LET], null_EEVAL[FALSE][LET][LET], null_EEVAL[LET], null_EEVAL[LET][LET], null_RUN[LET], null_EEVAL[LET][LET][LET], null_EEVAL[FALSE][ITE], null_RUN[LET][LET], null_RUN, null_lookname, null_lookname[Ite], null_!EQ, null_eeval, null_eeval[False][Let], null_lookbody, null_lookbody[Ite], null_eeval[False][Let][Let], null_eeval[Let][Let][Let], null_eeval[True][Ite], null_eqExp, null_eeval[Ite], null_checkConstrExp, null_eeval[Let], null_lookvar, null_lookvar[Ite], null_eeval[Let][Let], null_apply, null_apply[Ite], null_and, null_EEVAL, null_EQEXP, null_LOOKNAME, null_LOOKBODY, null_LOOKVAR, const, const1 ---------------------------------------- (50) 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(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) [1] EEVAL(F, z0, z1, z2) -> c34 [1] EEVAL(T, z0, z1, z2) -> c35 [1] 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)) [1] EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) [1] EQEXP(Error(z0, z1), F) -> c42 [1] EQEXP(Error(z0, z1), T) -> c43 [1] EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 [1] EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 [1] EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 [1] EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 [1] EQEXP(Error(z0, z1), Var(z2)) -> c48 [1] EQEXP(F, Error(z0, z1)) -> c49 [1] EQEXP(F, F) -> c50 [1] EQEXP(F, T) -> c51 [1] EQEXP(F, Fun(z0, z1)) -> c52 [1] EQEXP(F, Eq(z0, z1)) -> c53 [1] EQEXP(F, ITE(z0, z1, z2)) -> c54 [1] EQEXP(F, Bsf(z0, z1, z2)) -> c55 [1] EQEXP(F, Var(z0)) -> c56 [1] EQEXP(T, Error(z0, z1)) -> c57 [1] EQEXP(T, F) -> c58 [1] EQEXP(T, T) -> c59 [1] EQEXP(T, Fun(z0, z1)) -> c60 [1] EQEXP(T, Eq(z0, z1)) -> c61 [1] EQEXP(T, ITE(z0, z1, z2)) -> c62 [1] EQEXP(T, Bsf(z0, z1, z2)) -> c63 [1] EQEXP(T, Var(z0)) -> c64 [1] EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 [1] EQEXP(Fun(z0, z1), F) -> c66 [1] EQEXP(Fun(z0, z1), T) -> c67 [1] EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 [1] EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 [1] EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 [1] EQEXP(Fun(z0, z1), Var(z2)) -> c73 [1] EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 [1] EQEXP(Eq(z0, z1), F) -> c75 [1] EQEXP(Eq(z0, z1), T) -> c76 [1] EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 [1] EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 [1] EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 [1] EQEXP(Eq(z0, z1), Var(z2)) -> c82 [1] EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 [1] EQEXP(ITE(z0, z1, z2), F) -> c84 [1] EQEXP(ITE(z0, z1, z2), T) -> c85 [1] EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 [1] EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 [1] EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 [1] EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 [1] EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 [1] EQEXP(Bsf(z0, z1, z2), F) -> c94 [1] EQEXP(Bsf(z0, z1, z2), T) -> c95 [1] EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 [1] EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 [1] EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 [1] EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 [1] EQEXP(Var(z0), Error(z1, z2)) -> c102 [1] EQEXP(Var(z0), F) -> c103 [1] EQEXP(Var(z0), T) -> c104 [1] EQEXP(Var(z0), Fun(z1, z2)) -> c105 [1] EQEXP(Var(z0), Eq(z1, z2)) -> c106 [1] EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 [1] EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 [1] EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) [1] LOOKNAME(z0, Cons(Fun(z1, z2), z3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) [1] LOOKBODY(z0, Cons(Fun(z1, z2), z3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) [1] LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) [1] EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) [1] EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) [1] EEVAL(Error(z0, z1), z2, z3, z4) -> c33 [1] 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)) [1] EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) [1] EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) [1] EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) [1] EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) [1] EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) [1] EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) [1] EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) [1] EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) [1] EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) [1] EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) [1] EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) [1] APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) [1] !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) [0] LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) [0] LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) [0] LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) [0] EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) [0] EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) [0] 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)) [0] 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)) [0] 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)) [0] EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) [0] RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) [0] EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) [0] EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) [0] RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) [0] RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) [0] 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)))) [0] EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4))) [0] lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) [0] lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 [0] lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) [0] !EQ(S(z0), S(z1)) -> !EQ(z0, z1) [0] !EQ(0, S(z0)) -> False [0] !EQ(S(z0), 0) -> False [0] !EQ(0, 0) -> True [0] eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) [0] 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) [0] eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) [0] eeval(F, z0, z1, z2) -> F [0] eeval(T, z0, z1, z2) -> T [0] eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) [0] eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) [0] eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) [0] eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) [0] lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) [0] lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 [0] lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) [0] 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)) [0] eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) [0] eeval[True][Ite](False, z0, z1, z2, z3) -> F [0] eeval[True][Ite](True, z0, z1, z2, z3) -> T [0] eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) [0] eqExp(Error(z0, z1), F) -> False [0] eqExp(Error(z0, z1), T) -> False [0] eqExp(Error(z0, z1), Fun(z2, z3)) -> False [0] eqExp(Error(z0, z1), Eq(z2, z3)) -> False [0] eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False [0] eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False [0] eqExp(Error(z0, z1), Var(z2)) -> False [0] eqExp(F, Error(z0, z1)) -> False [0] eqExp(F, F) -> True [0] eqExp(F, T) -> False [0] eqExp(F, Fun(z0, z1)) -> False [0] eqExp(F, Eq(z0, z1)) -> False [0] eqExp(F, ITE(z0, z1, z2)) -> False [0] eqExp(F, Bsf(z0, z1, z2)) -> False [0] eqExp(F, Var(z0)) -> False [0] eqExp(T, Error(z0, z1)) -> False [0] eqExp(T, F) -> False [0] eqExp(T, T) -> True [0] eqExp(T, Fun(z0, z1)) -> False [0] eqExp(T, Eq(z0, z1)) -> False [0] eqExp(T, ITE(z0, z1, z2)) -> False [0] eqExp(T, Bsf(z0, z1, z2)) -> False [0] eqExp(T, Var(z0)) -> False [0] eqExp(Fun(z0, z1), Error(z2, z3)) -> False [0] eqExp(Fun(z0, z1), F) -> False [0] eqExp(Fun(z0, z1), T) -> False [0] eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) [0] eqExp(Fun(z0, z1), Eq(z2, z3)) -> False [0] eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False [0] eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False [0] eqExp(Fun(z0, z1), Var(z2)) -> False [0] eqExp(Eq(z0, z1), Error(z2, z3)) -> False [0] eqExp(Eq(z0, z1), F) -> False [0] eqExp(Eq(z0, z1), T) -> False [0] eqExp(Eq(z0, z1), Fun(z2, z3)) -> False [0] eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) [0] eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False [0] eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False [0] eqExp(Eq(z0, z1), Var(z2)) -> False [0] eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False [0] eqExp(ITE(z0, z1, z2), F) -> False [0] eqExp(ITE(z0, z1, z2), T) -> False [0] eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False [0] eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False [0] eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) [0] eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False [0] eqExp(ITE(z0, z1, z2), Var(z3)) -> False [0] eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False [0] eqExp(Bsf(z0, z1, z2), F) -> False [0] eqExp(Bsf(z0, z1, z2), T) -> False [0] eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False [0] eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False [0] eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False [0] eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) [0] eqExp(Bsf(z0, z1, z2), Var(z3)) -> False [0] eqExp(Var(z0), Error(z1, z2)) -> False [0] eqExp(Var(z0), F) -> False [0] eqExp(Var(z0), T) -> False [0] eqExp(Var(z0), Fun(z1, z2)) -> False [0] eqExp(Var(z0), Eq(z1, z2)) -> False [0] eqExp(Var(z0), ITE(z1, z2, z3)) -> False [0] eqExp(Var(z0), Bsf(z1, z2, z3)) -> False [0] eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) [0] eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) [0] eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) [0] checkConstrExp(Error(z0, z1), T) -> False [0] checkConstrExp(F, T) -> False [0] checkConstrExp(T, T) -> True [0] checkConstrExp(Fun(z0, z1), T) -> False [0] checkConstrExp(Eq(z0, z1), T) -> False [0] checkConstrExp(ITE(z0, z1, z2), T) -> False [0] checkConstrExp(Bsf(z0, z1, z2), T) -> False [0] checkConstrExp(Var(z0), T) -> False [0] 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)) [0] lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) [0] lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) [0] lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 [0] eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) [0] apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) [0] apply[Ite](False, z0, z1, z2) -> F [0] apply[Ite](True, z0, z1, z2) -> T [0] and(False, False) -> False [0] and(True, False) -> False [0] and(False, True) -> False [0] and(True, True) -> True [0] !EQ'(v0, v1) -> null_!EQ' [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] 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[FALSE][ITE](v0, v1, v2, v3, v4) -> null_EEVAL[FALSE][ITE] [0] RUN[LET][LET](v0, v1, v2, v3) -> null_RUN[LET][LET] [0] RUN(v0, v1) -> null_RUN [0] lookname(v0, v1) -> null_lookname [0] lookname[Ite](v0, v1, v2) -> null_lookname[Ite] [0] !EQ(v0, v1) -> null_!EQ [0] eeval(v0, v1, v2, v3) -> null_eeval [0] eeval[False][Let](v0, v1, v2, v3, v4) -> null_eeval[False][Let] [0] lookbody(v0, v1) -> null_lookbody [0] lookbody[Ite](v0, v1, v2) -> null_lookbody[Ite] [0] eeval[False][Let][Let](v0, v1, v2, v3, v4, v5) -> null_eeval[False][Let][Let] [0] eeval[Let][Let][Let](v0, v1, v2, v3, v4, v5, v6) -> null_eeval[Let][Let][Let] [0] eeval[True][Ite](v0, v1, v2, v3, v4) -> null_eeval[True][Ite] [0] eqExp(v0, v1) -> null_eqExp [0] eeval[Ite](v0, v1, v2, v3, v4) -> null_eeval[Ite] [0] checkConstrExp(v0, v1) -> null_checkConstrExp [0] eeval[Let](v0, v1, v2, v3, v4) -> null_eeval[Let] [0] lookvar(v0, v1, v2) -> null_lookvar [0] lookvar[Ite](v0, v1, v2, v3) -> null_lookvar[Ite] [0] eeval[Let][Let](v0, v1, v2, v3, v4, v5) -> null_eeval[Let][Let] [0] apply(v0, v1, v2) -> null_apply [0] apply[Ite](v0, v1, v2, v3) -> null_apply[Ite] [0] and(v0, v1) -> null_and [0] EEVAL(v0, v1, v2, v3) -> null_EEVAL [0] EQEXP(v0, v1) -> null_EQEXP [0] LOOKNAME(v0, v1) -> null_LOOKNAME [0] LOOKBODY(v0, v1) -> null_LOOKBODY [0] LOOKVAR(v0, v1, v2) -> null_LOOKVAR [0] The TRS has the following type information: EEVAL :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> c30:c34:c35:c37:c38:c31:c32:c33:c36:null_EEVAL Fun :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] c30 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME -> c175:null_LOOKBODY -> c30:c34:c35:c37:c38:c31:c32:c33:c36:null_EEVAL EEVAL[FALSE][LET] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME lookbody :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] LOOKBODY :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> c175:null_LOOKBODY F :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] c34 :: c30:c34:c35:c37:c38:c31:c32:c33:c36:null_EEVAL T :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] c35 :: c30:c34:c35:c37:c38:c31:c32:c33:c36:null_EEVAL Bsf :: a -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] c37 :: c21:null_EEVAL[LET] -> c30:c34:c35:c37:c38:c31:c32:c33:c36:null_EEVAL -> c30:c34:c35:c37:c38:c31:c32:c33:c36:null_EEVAL EEVAL[LET] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> c21:null_EEVAL[LET] eeval :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] Var :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] c38 :: c189:null_LOOKVAR -> c30:c34:c35:c37:c38:c31:c32:c33:c36:null_EEVAL LOOKVAR :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> c189:null_LOOKVAR EQEXP :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME Error :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] c42 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c43 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c44 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME Eq :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] c45 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME ITE :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] c46 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c47 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c48 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c49 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c50 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c51 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c52 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c53 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c54 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c55 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c56 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c57 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c58 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c59 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c60 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c61 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c62 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c63 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c64 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c65 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c66 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c67 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c70 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c71 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c72 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c73 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c74 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c75 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c76 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c77 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c80 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c81 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c82 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c83 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c84 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c85 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c86 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c87 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c91 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c92 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c93 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c94 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c95 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c96 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c97 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c98 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c101 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c102 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c103 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c104 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c105 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c106 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c107 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c108 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c109 :: c:null_!EQ' -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME !EQ' :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> c:null_!EQ' LOOKNAME :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME Cons :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil c174 :: c14:null_LOOKNAME[ITE] -> c:null_!EQ' -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME LOOKNAME[ITE] :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> c14:null_LOOKNAME[ITE] !EQ :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and c175 :: c16:null_LOOKBODY[ITE] -> c:null_!EQ' -> c175:null_LOOKBODY LOOKBODY[ITE] :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> c16:null_LOOKBODY[ITE] c189 :: c11:null_LOOKVAR[ITE] -> c:null_!EQ' -> c189:null_LOOKVAR LOOKVAR[ITE] :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> c11:null_LOOKVAR[ITE] c31 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME -> c30:c34:c35:c37:c38:c31:c32:c33:c36:null_EEVAL -> c30:c34:c35:c37:c38:c31:c32:c33:c36:null_EEVAL c32 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME -> c30:c34:c35:c37:c38:c31:c32:c33:c36:null_EEVAL -> c30:c34:c35:c37:c38:c31:c32:c33:c36:null_EEVAL c33 :: c30:c34:c35:c37:c38:c31:c32:c33:c36:null_EEVAL c36 :: c17:c18:null_EEVAL[ITE] -> c30:c34:c35:c37:c38:c31:c32:c33:c36:null_EEVAL -> c30:c34:c35:c37:c38:c31:c32:c33:c36:null_EEVAL EEVAL[ITE] :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> c17:c18:null_EEVAL[ITE] checkConstrExp :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and c40 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c41 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c68 :: c:null_!EQ' -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c69 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c78 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c79 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c88 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c89 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c90 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c99 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c100 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME APPLY :: a -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> c188 c188 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME -> c188 S :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] c :: c:null_!EQ' -> c:null_!EQ' False :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and c11 :: c189:null_LOOKVAR -> c11:null_LOOKVAR[ITE] c14 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME -> c14:null_LOOKNAME[ITE] c16 :: c175:null_LOOKBODY -> c16:null_LOOKBODY[ITE] c17 :: c30:c34:c35:c37:c38:c31:c32:c33:c36:null_EEVAL -> c17:c18:null_EEVAL[ITE] True :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and c18 :: c30:c34:c35:c37:c38:c31:c32:c33:c36:null_EEVAL -> c17:c18:null_EEVAL[ITE] c19 :: c20:null_EEVAL[FALSE][LET][LET] -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME EEVAL[FALSE][LET][LET] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> c20:null_EEVAL[FALSE][LET][LET] lookname :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] c20 :: c29:null_EEVAL[LET][LET][LET] -> c30:c34:c35:c37:c38:c31:c32:c33:c36:null_EEVAL -> c20:null_EEVAL[FALSE][LET][LET] EEVAL[LET][LET][LET] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> c29:null_EEVAL[LET][LET][LET] c21 :: c22:null_EEVAL[LET][LET] -> c30:c34:c35:c37:c38:c31:c32:c33:c36:null_EEVAL -> c21:null_EEVAL[LET] EEVAL[LET][LET] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> c22:null_EEVAL[LET][LET] c22 :: c188 -> c22:null_EEVAL[LET][LET] RUN[LET] :: Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c28 :: c30:c34:c35:c37:c38:c31:c32:c33:c36:null_EEVAL -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME Nil :: Cons:Nil c29 :: c30:c34:c35:c37:c38:c31:c32:c33:c36:null_EEVAL -> c29:null_EEVAL[LET][LET][LET] EEVAL[FALSE][ITE] :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME c1 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME RUN[LET][LET] :: Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME RUN :: Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME lookname[Ite] :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] 0 :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] eeval[False][Let] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] eeval[True][Ite] :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] eqExp :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and eeval[False][Ite] :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] eeval[Ite] :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] eeval[Let] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] lookvar :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] eeval[False][Let][Let] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] lookbody[Ite] :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] eeval[Let][Let][Let] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] and :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and eeval[Let][Let] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] lookvar[Ite] :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] apply :: a -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] apply[Ite] :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> a -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_!EQ' :: c:null_!EQ' null_LOOKVAR[ITE] :: c11:null_LOOKVAR[ITE] null_LOOKNAME[ITE] :: c14:null_LOOKNAME[ITE] null_LOOKBODY[ITE] :: c16:null_LOOKBODY[ITE] null_EEVAL[ITE] :: c17:c18:null_EEVAL[ITE] null_EEVAL[FALSE][LET] :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME null_EEVAL[FALSE][LET][LET] :: c20:null_EEVAL[FALSE][LET][LET] null_EEVAL[LET] :: c21:null_EEVAL[LET] null_EEVAL[LET][LET] :: c22:null_EEVAL[LET][LET] null_RUN[LET] :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME null_EEVAL[LET][LET][LET] :: c29:null_EEVAL[LET][LET][LET] null_EEVAL[FALSE][ITE] :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME null_RUN[LET][LET] :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME null_RUN :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME null_lookname :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_lookname[Ite] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_!EQ :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and null_eeval :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_eeval[False][Let] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_lookbody :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_lookbody[Ite] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_eeval[False][Let][Let] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_eeval[Let][Let][Let] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_eeval[True][Ite] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_eqExp :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and null_eeval[Ite] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_checkConstrExp :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and null_eeval[Let] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_lookvar :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_lookvar[Ite] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_eeval[Let][Let] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_apply :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_apply[Ite] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_and :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and null_EEVAL :: c30:c34:c35:c37:c38:c31:c32:c33:c36:null_EEVAL null_EQEXP :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME null_LOOKNAME :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN:null_EQEXP:null_LOOKNAME null_LOOKBODY :: c175:null_LOOKBODY null_LOOKVAR :: c189:null_LOOKVAR const :: a const1 :: c188 Rewrite Strategy: INNERMOST ---------------------------------------- (51) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: F => 1 c34 => 1 T => 2 c35 => 2 c42 => 8 c43 => 9 c44 => 10 c45 => 11 c46 => 12 c47 => 13 c48 => 14 c49 => 15 c50 => 16 c51 => 17 c52 => 18 c53 => 19 c54 => 20 c55 => 21 c56 => 22 c57 => 23 c58 => 24 c59 => 25 c60 => 26 c61 => 27 c62 => 28 c63 => 29 c64 => 30 c65 => 31 c66 => 32 c67 => 33 c70 => 34 c71 => 35 c72 => 36 c73 => 37 c74 => 38 c75 => 39 c76 => 40 c77 => 41 c80 => 42 c81 => 43 c82 => 44 c83 => 45 c84 => 46 c85 => 47 c86 => 48 c87 => 49 c91 => 50 c92 => 51 c93 => 52 c94 => 53 c95 => 54 c96 => 55 c97 => 56 c98 => 57 c101 => 0 c102 => 1 c103 => 2 c104 => 3 c105 => 4 c106 => 5 c107 => 6 c108 => 7 c33 => 0 False => 1 True => 2 Nil => 0 0 => 0 null_!EQ' => 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_RUN[LET] => 0 null_EEVAL[LET][LET][LET] => 0 null_EEVAL[FALSE][ITE] => 0 null_RUN[LET][LET] => 0 null_RUN => 0 null_lookname => 0 null_lookname[Ite] => 0 null_!EQ => 0 null_eeval => 0 null_eeval[False][Let] => 0 null_lookbody => 0 null_lookbody[Ite] => 0 null_eeval[False][Let][Let] => 0 null_eeval[Let][Let][Let] => 0 null_eeval[True][Ite] => 0 null_eqExp => 0 null_eeval[Ite] => 0 null_checkConstrExp => 0 null_eeval[Let] => 0 null_lookvar => 0 null_lookvar[Ite] => 0 null_eeval[Let][Let] => 0 null_apply => 0 null_apply[Ite] => 0 null_and => 0 null_EEVAL => 0 null_EQEXP => 0 null_LOOKNAME => 0 null_LOOKBODY => 0 null_LOOKVAR => 0 const => 0 const1 => 0 ---------------------------------------- (52) Obligation: Complexity RNTS consisting of the following rules: !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 !EQ(z, z') -{ 0 }-> 1 :|: z0 >= 0, z' = 1 + z0, z = 0 !EQ(z, z') -{ 0 }-> 1 :|: z = 1 + z0, z0 >= 0, z' = 0 !EQ(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 !EQ(z, z') -{ 0 }-> !EQ(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 !EQ'(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 !EQ'(z, z') -{ 0 }-> 1 + !EQ'(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 APPLY(z, z', z'') -{ 1 }-> 1 + EQEXP(z1, z2) :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0 EEVAL(z, z', z'', z8) -{ 1 }-> 2 :|: z = 2, z1 >= 0, z8 = z2, z0 >= 0, z' = z0, z2 >= 0, z'' = z1 EEVAL(z, z', z'', z8) -{ 1 }-> 1 :|: z1 >= 0, z = 1, z8 = z2, z0 >= 0, z' = z0, z2 >= 0, z'' = z1 EEVAL(z, z', z'', z8) -{ 1 }-> 0 :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z8 = z4, z4 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EEVAL(z, z', z'', z8) -{ 0 }-> 0 :|: v0 >= 0, z8 = v3, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 EEVAL(z, z', z'', z8) -{ 1 }-> 1 + LOOKVAR(z0, z1, z2) :|: z'' = z2, z1 >= 0, z8 = z3, z = 1 + z0, z' = z1, z0 >= 0, z2 >= 0, z3 >= 0 EEVAL(z, z', z'', z8) -{ 1 }-> 1 + EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)) + EEVAL(z0, z2, z3, z4) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z8 = z4, z4 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EEVAL(z, z', z'', z8) -{ 1 }-> 1 + EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)) + EEVAL(z1, z2, z3, z4) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z8 = z4, z4 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EEVAL(z, z', z'', z8) -{ 1 }-> 1 + EEVAL[LET](1 + z0 + z1 + z2, z3, z4, z5, eeval(z1, z3, z4, z5)) + EEVAL(z1, z3, z4, z5) :|: z5 >= 0, z1 >= 0, z = 1 + z0 + z1 + z2, z' = z3, z'' = z4, z0 >= 0, z4 >= 0, z8 = z5, z2 >= 0, z3 >= 0 EEVAL(z, z', z'', z8) -{ 1 }-> 1 + EEVAL[ITE](checkConstrExp(eeval(z0, z3, z4, z5), 2), 1 + z0 + z1 + z2, z3, z4, z5) + EEVAL(z0, z3, z4, z5) :|: z5 >= 0, z1 >= 0, z = 1 + z0 + z1 + z2, z' = z3, z'' = z4, z0 >= 0, z4 >= 0, z8 = z5, z2 >= 0, z3 >= 0 EEVAL(z, z', z'', z8) -{ 1 }-> 1 + EEVAL[FALSE][LET](1 + z0 + z1, z2, z3, z4, lookbody(z0, z4)) + LOOKBODY(z0, z4) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z8 = z4, z4 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EEVAL[FALSE][ITE](z, z', z'', z8, z9) -{ 0 }-> 0 :|: v0 >= 0, v4 >= 0, z8 = v3, z'' = v2, v1 >= 0, z = v0, z' = v1, z9 = v4, v2 >= 0, v3 >= 0 EEVAL[FALSE][ITE](z, z', z'', z8, z9) -{ 0 }-> 1 + EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)) :|: z = 2, z'' = z2, z' = 1 + z0 + z1, z1 >= 0, z8 = z3, z0 >= 0, z4 >= 0, z9 = z4, z2 >= 0, z3 >= 0 EEVAL[FALSE][ITE](z, z', z'', z8, z9) -{ 0 }-> 1 + EEVAL[FALSE][LET](1 + z0 + z1, z2, z3, z4, lookbody(z0, z4)) :|: z'' = z2, z' = 1 + z0 + z1, z1 >= 0, z = 1, z8 = z3, z0 >= 0, z4 >= 0, z9 = z4, z2 >= 0, z3 >= 0 EEVAL[FALSE][LET](z, z', z'', z8, z9) -{ 0 }-> 0 :|: v0 >= 0, v4 >= 0, z8 = v3, z'' = v2, v1 >= 0, z = v0, z' = v1, z9 = v4, v2 >= 0, v3 >= 0 EEVAL[FALSE][LET](z, z', z'', z8, z9) -{ 0 }-> 1 + EEVAL[FALSE][LET][LET](1 + z0 + z1, z2, z3, z4, z5, lookname(z0, z4)) + LOOKNAME(z0, z4) :|: z5 >= 0, z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z8 = z4, z4 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, z9 = z5 EEVAL[FALSE][LET][LET](z, z', z'', z8, z9, z10) -{ 0 }-> 0 :|: v0 >= 0, v4 >= 0, z8 = v3, z'' = v2, z10 = v5, v1 >= 0, v5 >= 0, z = v0, z' = v1, z9 = v4, v2 >= 0, v3 >= 0 EEVAL[FALSE][LET][LET](z, z', z'', z8, z9, z10) -{ 0 }-> 1 + EEVAL[LET][LET][LET](1 + z0 + z1, z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) + EEVAL(z1, z2, z3, z4) :|: z5 >= 0, z' = z2, z0 >= 0, z'' = z3, z4 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, z10 = z6, z1 >= 0, z6 >= 0, z8 = z4, z9 = z5 EEVAL[ITE](z, z', z'', z8, z9) -{ 0 }-> 0 :|: v0 >= 0, v4 >= 0, z8 = v3, z'' = v2, v1 >= 0, z = v0, z' = v1, z9 = v4, v2 >= 0, v3 >= 0 EEVAL[ITE](z, z', z'', z8, z9) -{ 0 }-> 1 + EEVAL(z1, z3, z4, z5) :|: z = 2, z5 >= 0, z1 >= 0, z' = 1 + z0 + z1 + z2, z0 >= 0, z'' = z3, z8 = z4, z4 >= 0, z2 >= 0, z3 >= 0, z9 = z5 EEVAL[ITE](z, z', z'', z8, z9) -{ 0 }-> 1 + EEVAL(z2, z3, z4, z5) :|: z5 >= 0, z1 >= 0, z = 1, z' = 1 + z0 + z1 + z2, z0 >= 0, z'' = z3, z8 = z4, z4 >= 0, z2 >= 0, z3 >= 0, z9 = z5 EEVAL[LET](z, z', z'', z8, z9) -{ 0 }-> 0 :|: v0 >= 0, v4 >= 0, z8 = v3, z'' = v2, v1 >= 0, z = v0, z' = v1, z9 = v4, v2 >= 0, v3 >= 0 EEVAL[LET](z, z', z'', z8, z9) -{ 0 }-> 1 + EEVAL[LET][LET](1 + z0 + z1 + z2, z3, z4, z5, z6, eeval(z2, z3, z4, z5)) + EEVAL(z2, z3, z4, z5) :|: z5 >= 0, z1 >= 0, z = 1 + z0 + z1 + z2, z' = z3, z6 >= 0, z'' = z4, z0 >= 0, z4 >= 0, z8 = z5, z9 = z6, z2 >= 0, z3 >= 0 EEVAL[LET][LET](z, z', z'', z8, z9, z10) -{ 0 }-> 0 :|: v0 >= 0, v4 >= 0, z8 = v3, z'' = v2, z10 = v5, v1 >= 0, v5 >= 0, z = v0, z' = v1, z9 = v4, v2 >= 0, v3 >= 0 EEVAL[LET][LET](z, z', z'', z8, z9, z10) -{ 0 }-> 1 + APPLY(z0, z6, z7) :|: z5 >= 0, z'' = z4, z0 >= 0, z4 >= 0, z10 = z7, z2 >= 0, z3 >= 0, z1 >= 0, z = 1 + z0 + z1 + z2, z' = z3, z6 >= 0, z7 >= 0, z8 = z5, z9 = z6 EEVAL[LET][LET][LET](z, z', z'', z8, z9, z10, z11) -{ 0 }-> 0 :|: v0 >= 0, v6 >= 0, z'' = v2, z10 = v5, v1 >= 0, v5 >= 0, z = v0, z' = v1, z11 = v6, v2 >= 0, v3 >= 0, v4 >= 0, z8 = v3, z9 = v4 EEVAL[LET][LET][LET](z, z', z'', z8, z9, z10, z11) -{ 0 }-> 1 + EEVAL(z4, 1 + z5 + 0, 1 + z6 + 0, z3) :|: z'' = z2, z5 >= 0, z = z0, z10 = z5, z8 = z3, z' = z1, z0 >= 0, z4 >= 0, z11 = z6, z2 >= 0, z3 >= 0, z1 >= 0, z6 >= 0, z9 = z4 EQEXP(z, z') -{ 1 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 EQEXP(z, z') -{ 1 }-> 8 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQEXP(z, z') -{ 1 }-> 7 :|: z1 >= 0, z' = 1 + z1 + z2 + z3, z = 1 + z0, z0 >= 0, z2 >= 0, z3 >= 0 EQEXP(z, z') -{ 1 }-> 6 :|: z1 >= 0, z' = 1 + z1 + z2 + z3, z = 1 + z0, z0 >= 0, z2 >= 0, z3 >= 0 EQEXP(z, z') -{ 1 }-> 57 :|: z5 >= 0, z1 >= 0, z = 1 + z0 + z1 + z2, z0 >= 0, z' = 1 + z3 + z4 + z5, z4 >= 0, z2 >= 0, z3 >= 0 EQEXP(z, z') -{ 1 }-> 56 :|: z1 >= 0, z = 1 + z0 + z1 + z2, z0 >= 0, z4 >= 0, z2 >= 0, z3 >= 0, z' = 1 + z3 + z4 EQEXP(z, z') -{ 1 }-> 55 :|: z1 >= 0, z = 1 + z0 + z1 + z2, z0 >= 0, z4 >= 0, z2 >= 0, z3 >= 0, z' = 1 + z3 + z4 EQEXP(z, z') -{ 1 }-> 54 :|: z1 >= 0, z = 1 + z0 + z1 + z2, z' = 2, z0 >= 0, z2 >= 0 EQEXP(z, z') -{ 1 }-> 53 :|: z1 >= 0, z = 1 + z0 + z1 + z2, z0 >= 0, z' = 1, z2 >= 0 EQEXP(z, z') -{ 1 }-> 52 :|: z1 >= 0, z = 1 + z0 + z1 + z2, z0 >= 0, z4 >= 0, z2 >= 0, z3 >= 0, z' = 1 + z3 + z4 EQEXP(z, z') -{ 1 }-> 51 :|: z1 >= 0, z = 1 + z0 + z1 + z2, z0 >= 0, z2 >= 0, z3 >= 0, z' = 1 + z3 EQEXP(z, z') -{ 1 }-> 50 :|: z5 >= 0, z1 >= 0, z = 1 + z0 + z1 + z2, z0 >= 0, z' = 1 + z3 + z4 + z5, z4 >= 0, z2 >= 0, z3 >= 0 EQEXP(z, z') -{ 1 }-> 5 :|: z1 >= 0, z' = 1 + z1 + z2, z = 1 + z0, z0 >= 0, z2 >= 0 EQEXP(z, z') -{ 1 }-> 49 :|: z1 >= 0, z = 1 + z0 + z1 + z2, z0 >= 0, z4 >= 0, z2 >= 0, z3 >= 0, z' = 1 + z3 + z4 EQEXP(z, z') -{ 1 }-> 48 :|: z1 >= 0, z = 1 + z0 + z1 + z2, z0 >= 0, z4 >= 0, z2 >= 0, z3 >= 0, z' = 1 + z3 + z4 EQEXP(z, z') -{ 1 }-> 47 :|: z1 >= 0, z = 1 + z0 + z1 + z2, z' = 2, z0 >= 0, z2 >= 0 EQEXP(z, z') -{ 1 }-> 46 :|: z1 >= 0, z = 1 + z0 + z1 + z2, z0 >= 0, z' = 1, z2 >= 0 EQEXP(z, z') -{ 1 }-> 45 :|: z1 >= 0, z = 1 + z0 + z1 + z2, z0 >= 0, z4 >= 0, z2 >= 0, z3 >= 0, z' = 1 + z3 + z4 EQEXP(z, z') -{ 1 }-> 44 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' = 1 + z2, z2 >= 0 EQEXP(z, z') -{ 1 }-> 43 :|: z' = 1 + z2 + z3 + z4, z1 >= 0, z0 >= 0, z4 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQEXP(z, z') -{ 1 }-> 42 :|: z' = 1 + z2 + z3 + z4, z1 >= 0, z0 >= 0, z4 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQEXP(z, z') -{ 1 }-> 41 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQEXP(z, z') -{ 1 }-> 40 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 EQEXP(z, z') -{ 1 }-> 4 :|: z1 >= 0, z' = 1 + z1 + z2, z = 1 + z0, z0 >= 0, z2 >= 0 EQEXP(z, z') -{ 1 }-> 39 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQEXP(z, z') -{ 1 }-> 38 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQEXP(z, z') -{ 1 }-> 37 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' = 1 + z2, z2 >= 0 EQEXP(z, z') -{ 1 }-> 36 :|: z' = 1 + z2 + z3 + z4, z1 >= 0, z0 >= 0, z4 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQEXP(z, z') -{ 1 }-> 35 :|: z' = 1 + z2 + z3 + z4, z1 >= 0, z0 >= 0, z4 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQEXP(z, z') -{ 1 }-> 34 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQEXP(z, z') -{ 1 }-> 33 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 EQEXP(z, z') -{ 1 }-> 32 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 EQEXP(z, z') -{ 1 }-> 31 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQEXP(z, z') -{ 1 }-> 30 :|: z = 2, z0 >= 0, z' = 1 + z0 EQEXP(z, z') -{ 1 }-> 3 :|: z' = 2, z = 1 + z0, z0 >= 0 EQEXP(z, z') -{ 1 }-> 29 :|: z = 2, z1 >= 0, z' = 1 + z0 + z1 + z2, z0 >= 0, z2 >= 0 EQEXP(z, z') -{ 1 }-> 28 :|: z = 2, z1 >= 0, z' = 1 + z0 + z1 + z2, z0 >= 0, z2 >= 0 EQEXP(z, z') -{ 1 }-> 27 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 EQEXP(z, z') -{ 1 }-> 26 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 EQEXP(z, z') -{ 1 }-> 25 :|: z = 2, z' = 2 EQEXP(z, z') -{ 1 }-> 24 :|: z = 2, z' = 1 EQEXP(z, z') -{ 1 }-> 23 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 EQEXP(z, z') -{ 1 }-> 22 :|: z = 1, z0 >= 0, z' = 1 + z0 EQEXP(z, z') -{ 1 }-> 21 :|: z1 >= 0, z = 1, z' = 1 + z0 + z1 + z2, z0 >= 0, z2 >= 0 EQEXP(z, z') -{ 1 }-> 20 :|: z1 >= 0, z = 1, z' = 1 + z0 + z1 + z2, z0 >= 0, z2 >= 0 EQEXP(z, z') -{ 1 }-> 2 :|: z = 1 + z0, z0 >= 0, z' = 1 EQEXP(z, z') -{ 1 }-> 19 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQEXP(z, z') -{ 1 }-> 18 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQEXP(z, z') -{ 1 }-> 17 :|: z' = 2, z = 1 EQEXP(z, z') -{ 1 }-> 16 :|: z = 1, z' = 1 EQEXP(z, z') -{ 1 }-> 15 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 EQEXP(z, z') -{ 1 }-> 14 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' = 1 + z2, z2 >= 0 EQEXP(z, z') -{ 1 }-> 13 :|: z' = 1 + z2 + z3 + z4, z1 >= 0, z0 >= 0, z4 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQEXP(z, z') -{ 1 }-> 12 :|: z' = 1 + z2 + z3 + z4, z1 >= 0, z0 >= 0, z4 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQEXP(z, z') -{ 1 }-> 11 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQEXP(z, z') -{ 1 }-> 10 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQEXP(z, z') -{ 1 }-> 1 :|: z1 >= 0, z' = 1 + z1 + z2, z = 1 + z0, z0 >= 0, z2 >= 0 EQEXP(z, z') -{ 1 }-> 0 :|: z1 >= 0, z = 1 + z0 + z1 + z2, z0 >= 0, z2 >= 0, z3 >= 0, z' = 1 + z3 EQEXP(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 EQEXP(z, z') -{ 1 }-> 1 + EQEXP(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQEXP(z, z') -{ 1 }-> 1 + EQEXP(z0, z3) :|: z5 >= 0, z1 >= 0, z = 1 + z0 + z1 + z2, z0 >= 0, z' = 1 + z3 + z4 + z5, z4 >= 0, z2 >= 0, z3 >= 0 EQEXP(z, z') -{ 1 }-> 1 + EQEXP(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQEXP(z, z') -{ 1 }-> 1 + EQEXP(z1, z4) :|: z5 >= 0, z1 >= 0, z = 1 + z0 + z1 + z2, z0 >= 0, z' = 1 + z3 + z4 + z5, z4 >= 0, z2 >= 0, z3 >= 0 EQEXP(z, z') -{ 1 }-> 1 + EQEXP(z2, z5) :|: z5 >= 0, z1 >= 0, z = 1 + z0 + z1 + z2, z0 >= 0, z' = 1 + z3 + z4 + z5, z4 >= 0, z2 >= 0, z3 >= 0 EQEXP(z, z') -{ 1 }-> 1 + !EQ'(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 EQEXP(z, z') -{ 1 }-> 1 + !EQ'(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 LOOKBODY(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 LOOKBODY(z, z') -{ 1 }-> 1 + LOOKBODY[ITE](!EQ(z0, z1), z0, 1 + (1 + z1 + z2) + z3) + !EQ'(z0, z1) :|: z = z0, z1 >= 0, z0 >= 0, z' = 1 + (1 + z1 + z2) + z3, z2 >= 0, z3 >= 0 LOOKBODY[ITE](z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 LOOKBODY[ITE](z, z', z'') -{ 0 }-> 1 + LOOKBODY(z0, z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 LOOKNAME(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 LOOKNAME(z, z') -{ 1 }-> 1 + LOOKNAME[ITE](!EQ(z0, z1), z0, 1 + (1 + z1 + z2) + z3) + !EQ'(z0, z1) :|: z = z0, z1 >= 0, z0 >= 0, z' = 1 + (1 + z1 + z2) + z3, z2 >= 0, z3 >= 0 LOOKNAME[ITE](z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 LOOKNAME[ITE](z, z', z'') -{ 0 }-> 1 + LOOKNAME(z0, z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 LOOKVAR(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 LOOKVAR(z, z', z'') -{ 1 }-> 1 + LOOKVAR[ITE](!EQ(z0, z1), z0, 1 + z1 + z2, z3) + !EQ'(z0, z1) :|: z = z0, z1 >= 0, z' = 1 + z1 + z2, z0 >= 0, z'' = z3, z2 >= 0, z3 >= 0 LOOKVAR[ITE](z, z', z'', z8) -{ 0 }-> 0 :|: v0 >= 0, z8 = v3, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 LOOKVAR[ITE](z, z', z'', z8) -{ 0 }-> 1 + LOOKVAR(z0, z2, z4) :|: z8 = 1 + z3 + z4, z1 >= 0, z = 1, z'' = 1 + z1 + z2, z0 >= 0, z4 >= 0, z' = z0, z2 >= 0, z3 >= 0 RUN(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 RUN(z, z') -{ 0 }-> 1 + RUN[LET][LET](1 + (1 + z0 + z1) + z2, z3, z0, lookbody(z0, 1 + (1 + z0 + z1) + z2)) :|: z = 1 + (1 + z0 + z1) + z2, z1 >= 0, z' = z3, z0 >= 0, z2 >= 0, z3 >= 0 RUN[LET](z, z', z'', z8, z9) -{ 0 }-> 0 :|: v0 >= 0, v4 >= 0, z8 = v3, z'' = v2, v1 >= 0, z = v0, z' = v1, z9 = v4, v2 >= 0, v3 >= 0 RUN[LET](z, z', z'', z8, z9) -{ 0 }-> 1 + EEVAL(z3, 1 + z4 + 0, 1 + z1 + 0, z0) :|: z'' = z2, z = z0, z1 >= 0, z8 = z3, z' = z1, z0 >= 0, z4 >= 0, z9 = z4, z2 >= 0, z3 >= 0 RUN[LET][LET](z, z', z'', z8) -{ 0 }-> 0 :|: v0 >= 0, z8 = v3, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 RUN[LET][LET](z, z', z'', z8) -{ 0 }-> 1 + RUN[LET](z0, z1, z2, z3, lookname(z2, z0)) :|: z'' = z2, z = z0, z1 >= 0, z8 = z3, z' = z1, z0 >= 0, z2 >= 0, z3 >= 0 RUN[LET][LET](z, z', z'', z8) -{ 0 }-> 1 + LOOKNAME(z2, z0) :|: z'' = z2, z = z0, z1 >= 0, z8 = z3, z' = z1, z0 >= 0, z2 >= 0, z3 >= 0 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'') -{ 0 }-> apply[Ite](eqExp(z1, z2), z0, z1, z2) :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0 apply(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 apply[Ite](z, z', z'', z8) -{ 0 }-> 2 :|: z = 2, z1 >= 0, z8 = z2, z0 >= 0, z' = z0, z2 >= 0, z'' = z1 apply[Ite](z, z', z'', z8) -{ 0 }-> 1 :|: z1 >= 0, z = 1, z8 = z2, z0 >= 0, z' = z0, z2 >= 0, z'' = z1 apply[Ite](z, z', z'', z8) -{ 0 }-> 0 :|: v0 >= 0, z8 = v3, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 checkConstrExp(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 checkConstrExp(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 checkConstrExp(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 checkConstrExp(z, z') -{ 0 }-> 1 :|: z1 >= 0, z = 1 + z0 + z1 + z2, z' = 2, z0 >= 0, z2 >= 0 checkConstrExp(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 + z0, z0 >= 0 checkConstrExp(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 eeval(z, z', z'', z8) -{ 0 }-> lookvar(z0, z1, z2) :|: z'' = z2, z1 >= 0, z8 = z3, z = 1 + z0, z' = z1, z0 >= 0, z2 >= 0, z3 >= 0 eeval(z, z', z'', z8) -{ 0 }-> eeval[True][Ite](eqExp(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), 1 + z0 + z1, z2, z3, z4) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z8 = z4, z4 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eeval(z, z', z'', z8) -{ 0 }-> eeval[Let](1 + z0 + z1 + z2, z3, z4, z5, eeval(z1, z3, z4, z5)) :|: z5 >= 0, z1 >= 0, z = 1 + z0 + z1 + z2, z' = z3, z'' = z4, z0 >= 0, z4 >= 0, z8 = z5, z2 >= 0, z3 >= 0 eeval(z, z', z'', z8) -{ 0 }-> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), 2), 1 + z0 + z1 + z2, z3, z4, z5) :|: z5 >= 0, z1 >= 0, z = 1 + z0 + z1 + z2, z' = z3, z'' = z4, z0 >= 0, z4 >= 0, z8 = z5, z2 >= 0, z3 >= 0 eeval(z, z', z'', z8) -{ 0 }-> eeval[False][Let](1 + z0 + z1, z2, z3, z4, lookbody(z0, z4)) :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z8 = z4, z4 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eeval(z, z', z'', z8) -{ 0 }-> 2 :|: z = 2, z1 >= 0, z8 = z2, z0 >= 0, z' = z0, z2 >= 0, z'' = z1 eeval(z, z', z'', z8) -{ 0 }-> 1 :|: z1 >= 0, z = 1, z8 = z2, z0 >= 0, z' = z0, z2 >= 0, z'' = z1 eeval(z, z', z'', z8) -{ 0 }-> 0 :|: v0 >= 0, z8 = v3, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 eeval(z, z', z'', z8) -{ 0 }-> 1 + 1 + (1 + z0 + z1) + z2 + z3 + z4 :|: z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z8 = z4, z4 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eeval[False][Let](z, z', z'', z8, z9) -{ 0 }-> eeval[False][Let][Let](1 + z0 + z1, z2, z3, z4, z5, lookname(z0, z4)) :|: z5 >= 0, z1 >= 0, z' = z2, z0 >= 0, z'' = z3, z8 = z4, z4 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, z9 = z5 eeval[False][Let](z, z', z'', z8, z9) -{ 0 }-> 0 :|: v0 >= 0, v4 >= 0, z8 = v3, z'' = v2, v1 >= 0, z = v0, z' = v1, z9 = v4, v2 >= 0, v3 >= 0 eeval[False][Let][Let](z, z', z'', z8, z9, z10) -{ 0 }-> eeval[Let][Let][Let](1 + z0 + z1, z2, z3, z4, z5, z6, eeval(z1, z2, z3, z4)) :|: z5 >= 0, z' = z2, z0 >= 0, z'' = z3, z4 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0, z10 = z6, z1 >= 0, z6 >= 0, z8 = z4, z9 = z5 eeval[False][Let][Let](z, z', z'', z8, z9, z10) -{ 0 }-> 0 :|: v0 >= 0, v4 >= 0, z8 = v3, z'' = v2, z10 = v5, v1 >= 0, v5 >= 0, z = v0, z' = v1, z9 = v4, v2 >= 0, v3 >= 0 eeval[Ite](z, z', z'', z8, z9) -{ 0 }-> eeval(z1, z3, z4, z5) :|: z = 2, z5 >= 0, z1 >= 0, z' = 1 + z0 + z1 + z2, z0 >= 0, z'' = z3, z8 = z4, z4 >= 0, z2 >= 0, z3 >= 0, z9 = z5 eeval[Ite](z, z', z'', z8, z9) -{ 0 }-> eeval(z2, z3, z4, z5) :|: z5 >= 0, z1 >= 0, z = 1, z' = 1 + z0 + z1 + z2, z0 >= 0, z'' = z3, z8 = z4, z4 >= 0, z2 >= 0, z3 >= 0, z9 = z5 eeval[Ite](z, z', z'', z8, z9) -{ 0 }-> 0 :|: v0 >= 0, v4 >= 0, z8 = v3, z'' = v2, v1 >= 0, z = v0, z' = v1, z9 = v4, v2 >= 0, v3 >= 0 eeval[Let](z, z', z'', z8, z9) -{ 0 }-> eeval[Let][Let](1 + z0 + z1 + z2, z3, z4, z5, z6, eeval(z2, z3, z4, z5)) :|: z5 >= 0, z1 >= 0, z = 1 + z0 + z1 + z2, z' = z3, z6 >= 0, z'' = z4, z0 >= 0, z4 >= 0, z8 = z5, z9 = z6, z2 >= 0, z3 >= 0 eeval[Let](z, z', z'', z8, z9) -{ 0 }-> 0 :|: v0 >= 0, v4 >= 0, z8 = v3, z'' = v2, v1 >= 0, z = v0, z' = v1, z9 = v4, v2 >= 0, v3 >= 0 eeval[Let][Let](z, z', z'', z8, z9, z10) -{ 0 }-> apply(z0, z6, z7) :|: z5 >= 0, z'' = z4, z0 >= 0, z4 >= 0, z10 = z7, z2 >= 0, z3 >= 0, z1 >= 0, z = 1 + z0 + z1 + z2, z' = z3, z6 >= 0, z7 >= 0, z8 = z5, z9 = z6 eeval[Let][Let](z, z', z'', z8, z9, z10) -{ 0 }-> 0 :|: v0 >= 0, v4 >= 0, z8 = v3, z'' = v2, z10 = v5, v1 >= 0, v5 >= 0, z = v0, z' = v1, z9 = v4, v2 >= 0, v3 >= 0 eeval[Let][Let][Let](z, z', z'', z8, z9, z10, z11) -{ 0 }-> eeval(z4, 1 + z5 + 0, 1 + z6 + 0, z3) :|: z'' = z2, z5 >= 0, z = z0, z10 = z5, z8 = z3, z' = z1, z0 >= 0, z4 >= 0, z11 = z6, z2 >= 0, z3 >= 0, z1 >= 0, z6 >= 0, z9 = z4 eeval[Let][Let][Let](z, z', z'', z8, z9, z10, z11) -{ 0 }-> 0 :|: v0 >= 0, v6 >= 0, z'' = v2, z10 = v5, v1 >= 0, v5 >= 0, z = v0, z' = v1, z11 = v6, v2 >= 0, v3 >= 0, v4 >= 0, z8 = v3, z9 = v4 eeval[True][Ite](z, z', z'', z8, z9) -{ 0 }-> 2 :|: z = 2, z1 >= 0, z8 = z2, z0 >= 0, z9 = z3, z' = z0, z2 >= 0, z3 >= 0, z'' = z1 eeval[True][Ite](z, z', z'', z8, z9) -{ 0 }-> 1 :|: z1 >= 0, z = 1, z8 = z2, z0 >= 0, z9 = z3, z' = z0, z2 >= 0, z3 >= 0, z'' = z1 eeval[True][Ite](z, z', z'', z8, z9) -{ 0 }-> 0 :|: v0 >= 0, v4 >= 0, z8 = v3, z'' = v2, v1 >= 0, z = v0, z' = v1, z9 = v4, v2 >= 0, v3 >= 0 eqExp(z, z') -{ 0 }-> and(eqExp(z0, z2), eqExp(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqExp(z, z') -{ 0 }-> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) :|: z5 >= 0, z1 >= 0, z = 1 + z0 + z1 + z2, z0 >= 0, z' = 1 + z3 + z4 + z5, z4 >= 0, z2 >= 0, z3 >= 0 eqExp(z, z') -{ 0 }-> and(2, and(eqExp(z1, z4), eqExp(z2, z5))) :|: z5 >= 0, z1 >= 0, z = 1 + z0 + z1 + z2, z0 >= 0, z' = 1 + z3 + z4 + z5, z4 >= 0, z2 >= 0, z3 >= 0 eqExp(z, z') -{ 0 }-> and(!EQ(z0, z2), eqExp(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqExp(z, z') -{ 0 }-> 2 :|: z = 1, z' = 1 eqExp(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 eqExp(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z' = 1, z = 1 + z0 + z1 eqExp(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 eqExp(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqExp(z, z') -{ 0 }-> 1 :|: z' = 1 + z2 + z3 + z4, z1 >= 0, z0 >= 0, z4 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 eqExp(z, z') -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' = 1 + z2, z2 >= 0 eqExp(z, z') -{ 0 }-> 1 :|: z' = 1 + z0 + z1, z1 >= 0, z = 1, z0 >= 0 eqExp(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 eqExp(z, z') -{ 0 }-> 1 :|: z1 >= 0, z = 1, z' = 1 + z0 + z1 + z2, z0 >= 0, z2 >= 0 eqExp(z, z') -{ 0 }-> 1 :|: z = 1, z0 >= 0, z' = 1 + z0 eqExp(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 eqExp(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 eqExp(z, z') -{ 0 }-> 1 :|: z = 2, z1 >= 0, z' = 1 + z0 + z1 + z2, z0 >= 0, z2 >= 0 eqExp(z, z') -{ 0 }-> 1 :|: z = 2, z0 >= 0, z' = 1 + z0 eqExp(z, z') -{ 0 }-> 1 :|: z1 >= 0, z = 1 + z0 + z1 + z2, z0 >= 0, z4 >= 0, z2 >= 0, z3 >= 0, z' = 1 + z3 + z4 eqExp(z, z') -{ 0 }-> 1 :|: z1 >= 0, z = 1 + z0 + z1 + z2, z0 >= 0, z' = 1, z2 >= 0 eqExp(z, z') -{ 0 }-> 1 :|: z1 >= 0, z = 1 + z0 + z1 + z2, z' = 2, z0 >= 0, z2 >= 0 eqExp(z, z') -{ 0 }-> 1 :|: z5 >= 0, z1 >= 0, z = 1 + z0 + z1 + z2, z0 >= 0, z' = 1 + z3 + z4 + z5, z4 >= 0, z2 >= 0, z3 >= 0 eqExp(z, z') -{ 0 }-> 1 :|: z1 >= 0, z = 1 + z0 + z1 + z2, z0 >= 0, z2 >= 0, z3 >= 0, z' = 1 + z3 eqExp(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 1 + z1 + z2, z = 1 + z0, z0 >= 0, z2 >= 0 eqExp(z, z') -{ 0 }-> 1 :|: z = 1 + z0, z0 >= 0, z' = 1 eqExp(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 + z0, z0 >= 0 eqExp(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 1 + z1 + z2 + z3, z = 1 + z0, z0 >= 0, z2 >= 0, z3 >= 0 eqExp(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 eqExp(z, z') -{ 0 }-> !EQ(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 lookbody(z, z') -{ 0 }-> lookbody[Ite](!EQ(z0, z1), z0, 1 + (1 + z1 + z2) + z3) :|: z = z0, z1 >= 0, z0 >= 0, z' = 1 + (1 + z1 + z2) + z3, z2 >= 0, z3 >= 0 lookbody(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 lookbody[Ite](z, z', z'') -{ 0 }-> z2 :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z2 >= 0, z3 >= 0, z'' = 1 + (1 + z1 + z2) + z3 lookbody[Ite](z, z', z'') -{ 0 }-> lookbody(z0, z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 lookbody[Ite](z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 lookname(z, z') -{ 0 }-> lookname[Ite](!EQ(z0, z1), z0, 1 + (1 + z1 + z2) + z3) :|: z = z0, z1 >= 0, z0 >= 0, z' = 1 + (1 + z1 + z2) + z3, z2 >= 0, z3 >= 0 lookname(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 lookname[Ite](z, z', z'') -{ 0 }-> z1 :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z2 >= 0, z3 >= 0, z'' = 1 + (1 + z1 + z2) + z3 lookname[Ite](z, z', z'') -{ 0 }-> lookname(z0, z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 lookname[Ite](z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 lookvar(z, z', z'') -{ 0 }-> lookvar[Ite](!EQ(z0, z1), z0, 1 + z1 + z2, z3) :|: z = z0, z1 >= 0, z' = 1 + z1 + z2, z0 >= 0, z'' = z3, z2 >= 0, z3 >= 0 lookvar(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 lookvar[Ite](z, z', z'', z8) -{ 0 }-> z2 :|: z = 2, z1 >= 0, z8 = 1 + z2 + z3, z0 >= 0, z' = z0, z2 >= 0, z3 >= 0, z'' = z1 lookvar[Ite](z, z', z'', z8) -{ 0 }-> lookvar(z0, z2, z4) :|: z8 = 1 + z3 + z4, z1 >= 0, z = 1, z'' = 1 + z1 + z2, z0 >= 0, z4 >= 0, z' = z0, z2 >= 0, z3 >= 0 lookvar[Ite](z, z', z'', z8) -{ 0 }-> 0 :|: v0 >= 0, z8 = v3, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 Only complete derivations are relevant for the runtime complexity. ---------------------------------------- (53) 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: EEVAL_4 EQEXP_2 LOOKNAME_2 LOOKBODY_2 LOOKVAR_3 APPLY_3 (c) The following functions are completely defined: !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[FALSE][ITE]_5 RUN[LET][LET]_4 RUN_2 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 Due to the following rules being added: !EQ'(v0, v1) -> const4 [0] LOOKVAR[ITE](v0, v1, v2, v3) -> const7 [0] LOOKNAME[ITE](v0, v1, v2) -> const5 [0] LOOKBODY[ITE](v0, v1, v2) -> const6 [0] EEVAL[ITE](v0, v1, v2, v3, v4) -> const8 [0] EEVAL[FALSE][LET](v0, v1, v2, v3, v4) -> null_EEVAL[FALSE][LET] [0] EEVAL[FALSE][LET][LET](v0, v1, v2, v3, v4, v5) -> const10 [0] EEVAL[LET](v0, v1, v2, v3, v4) -> const2 [0] EEVAL[LET][LET](v0, v1, v2, v3, v4, v5) -> const12 [0] RUN[LET](v0, v1, v2, v3, v4) -> null_RUN[LET] [0] EEVAL[LET][LET][LET](v0, v1, v2, v3, v4, v5, v6) -> const11 [0] EEVAL[FALSE][ITE](v0, v1, v2, v3, v4) -> null_EEVAL[FALSE][ITE] [0] RUN[LET][LET](v0, v1, v2, v3) -> null_RUN[LET][LET] [0] RUN(v0, v1) -> null_RUN [0] lookname(v0, v1) -> null_lookname [0] lookname[Ite](v0, v1, v2) -> null_lookname[Ite] [0] !EQ(v0, v1) -> null_!EQ [0] eeval(v0, v1, v2, v3) -> null_eeval [0] eeval[False][Let](v0, v1, v2, v3, v4) -> null_eeval[False][Let] [0] lookbody(v0, v1) -> null_lookbody [0] lookbody[Ite](v0, v1, v2) -> null_lookbody[Ite] [0] eeval[False][Let][Let](v0, v1, v2, v3, v4, v5) -> null_eeval[False][Let][Let] [0] eeval[Let][Let][Let](v0, v1, v2, v3, v4, v5, v6) -> null_eeval[Let][Let][Let] [0] eeval[True][Ite](v0, v1, v2, v3, v4) -> null_eeval[True][Ite] [0] eqExp(v0, v1) -> null_eqExp [0] eeval[Ite](v0, v1, v2, v3, v4) -> null_eeval[Ite] [0] checkConstrExp(v0, v1) -> null_checkConstrExp [0] eeval[Let](v0, v1, v2, v3, v4) -> null_eeval[Let] [0] lookvar(v0, v1, v2) -> null_lookvar [0] lookvar[Ite](v0, v1, v2, v3) -> null_lookvar[Ite] [0] eeval[Let][Let](v0, v1, v2, v3, v4, v5) -> null_eeval[Let][Let] [0] apply(v0, v1, v2) -> null_apply [0] apply[Ite](v0, v1, v2, v3) -> null_apply[Ite] [0] and(v0, v1) -> null_and [0] And the following fresh constants: const4, const7, const5, const6, const8, null_EEVAL[FALSE][LET], const10, const2, const12, null_RUN[LET], const11, null_EEVAL[FALSE][ITE], null_RUN[LET][LET], null_RUN, null_lookname, null_lookname[Ite], null_!EQ, null_eeval, null_eeval[False][Let], null_lookbody, null_lookbody[Ite], null_eeval[False][Let][Let], null_eeval[Let][Let][Let], null_eeval[True][Ite], null_eqExp, null_eeval[Ite], null_checkConstrExp, null_eeval[Let], null_lookvar, null_lookvar[Ite], null_eeval[Let][Let], null_apply, null_apply[Ite], null_and, const, const1, const3, const9 ---------------------------------------- (54) 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(z0, z1), z2, z3, z4) -> c30(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)), LOOKBODY(z0, z4)) [1] EEVAL(F, z0, z1, z2) -> c34 [1] EEVAL(T, z0, z1, z2) -> c35 [1] 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)) [1] EEVAL(Var(z0), z1, z2, z3) -> c38(LOOKVAR(z0, z1, z2)) [1] EQEXP(Error(z0, z1), F) -> c42 [1] EQEXP(Error(z0, z1), T) -> c43 [1] EQEXP(Error(z0, z1), Fun(z2, z3)) -> c44 [1] EQEXP(Error(z0, z1), Eq(z2, z3)) -> c45 [1] EQEXP(Error(z0, z1), ITE(z2, z3, z4)) -> c46 [1] EQEXP(Error(z0, z1), Bsf(z2, z3, z4)) -> c47 [1] EQEXP(Error(z0, z1), Var(z2)) -> c48 [1] EQEXP(F, Error(z0, z1)) -> c49 [1] EQEXP(F, F) -> c50 [1] EQEXP(F, T) -> c51 [1] EQEXP(F, Fun(z0, z1)) -> c52 [1] EQEXP(F, Eq(z0, z1)) -> c53 [1] EQEXP(F, ITE(z0, z1, z2)) -> c54 [1] EQEXP(F, Bsf(z0, z1, z2)) -> c55 [1] EQEXP(F, Var(z0)) -> c56 [1] EQEXP(T, Error(z0, z1)) -> c57 [1] EQEXP(T, F) -> c58 [1] EQEXP(T, T) -> c59 [1] EQEXP(T, Fun(z0, z1)) -> c60 [1] EQEXP(T, Eq(z0, z1)) -> c61 [1] EQEXP(T, ITE(z0, z1, z2)) -> c62 [1] EQEXP(T, Bsf(z0, z1, z2)) -> c63 [1] EQEXP(T, Var(z0)) -> c64 [1] EQEXP(Fun(z0, z1), Error(z2, z3)) -> c65 [1] EQEXP(Fun(z0, z1), F) -> c66 [1] EQEXP(Fun(z0, z1), T) -> c67 [1] EQEXP(Fun(z0, z1), Eq(z2, z3)) -> c70 [1] EQEXP(Fun(z0, z1), ITE(z2, z3, z4)) -> c71 [1] EQEXP(Fun(z0, z1), Bsf(z2, z3, z4)) -> c72 [1] EQEXP(Fun(z0, z1), Var(z2)) -> c73 [1] EQEXP(Eq(z0, z1), Error(z2, z3)) -> c74 [1] EQEXP(Eq(z0, z1), F) -> c75 [1] EQEXP(Eq(z0, z1), T) -> c76 [1] EQEXP(Eq(z0, z1), Fun(z2, z3)) -> c77 [1] EQEXP(Eq(z0, z1), ITE(z2, z3, z4)) -> c80 [1] EQEXP(Eq(z0, z1), Bsf(z2, z3, z4)) -> c81 [1] EQEXP(Eq(z0, z1), Var(z2)) -> c82 [1] EQEXP(ITE(z0, z1, z2), Error(z3, z4)) -> c83 [1] EQEXP(ITE(z0, z1, z2), F) -> c84 [1] EQEXP(ITE(z0, z1, z2), T) -> c85 [1] EQEXP(ITE(z0, z1, z2), Fun(z3, z4)) -> c86 [1] EQEXP(ITE(z0, z1, z2), Eq(z3, z4)) -> c87 [1] EQEXP(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> c91 [1] EQEXP(ITE(z0, z1, z2), Var(z3)) -> c92 [1] EQEXP(Bsf(z0, z1, z2), Error(z3, z4)) -> c93 [1] EQEXP(Bsf(z0, z1, z2), F) -> c94 [1] EQEXP(Bsf(z0, z1, z2), T) -> c95 [1] EQEXP(Bsf(z0, z1, z2), Fun(z3, z4)) -> c96 [1] EQEXP(Bsf(z0, z1, z2), Eq(z3, z4)) -> c97 [1] EQEXP(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> c98 [1] EQEXP(Bsf(z0, z1, z2), Var(z3)) -> c101 [1] EQEXP(Var(z0), Error(z1, z2)) -> c102 [1] EQEXP(Var(z0), F) -> c103 [1] EQEXP(Var(z0), T) -> c104 [1] EQEXP(Var(z0), Fun(z1, z2)) -> c105 [1] EQEXP(Var(z0), Eq(z1, z2)) -> c106 [1] EQEXP(Var(z0), ITE(z1, z2, z3)) -> c107 [1] EQEXP(Var(z0), Bsf(z1, z2, z3)) -> c108 [1] EQEXP(Var(z0), Var(z1)) -> c109(!EQ'(z0, z1)) [1] LOOKNAME(z0, Cons(Fun(z1, z2), z3)) -> c174(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) [1] LOOKBODY(z0, Cons(Fun(z1, z2), z3)) -> c175(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) [1] LOOKVAR(z0, Cons(z1, z2), z3) -> c189(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) [1] EEVAL(Eq(z0, z1), z2, z3, z4) -> c31(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z0, z2, z3, z4)) [1] EEVAL(Eq(z0, z1), z2, z3, z4) -> c32(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4)), EEVAL(z1, z2, z3, z4)) [1] EEVAL(Error(z0, z1), z2, z3, z4) -> c33 [1] 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)) [1] EQEXP(Error(z0, z1), Error(z2, z3)) -> c40(EQEXP(z0, z2)) [1] EQEXP(Error(z0, z1), Error(z2, z3)) -> c41(EQEXP(z1, z3)) [1] EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c68(!EQ'(z0, z2)) [1] EQEXP(Fun(z0, z1), Fun(z2, z3)) -> c69(EQEXP(z1, z3)) [1] EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c78(EQEXP(z0, z2)) [1] EQEXP(Eq(z0, z1), Eq(z2, z3)) -> c79(EQEXP(z1, z3)) [1] EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c88(EQEXP(z0, z3)) [1] EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c89(EQEXP(z1, z4)) [1] EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> c90(EQEXP(z2, z5)) [1] EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c99(EQEXP(z1, z4)) [1] EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> c100(EQEXP(z2, z5)) [1] APPLY(z0, z1, z2) -> c188(EQEXP(z1, z2)) [1] !EQ'(S(z0), S(z1)) -> c(!EQ'(z0, z1)) [0] LOOKVAR[ITE](False, z0, Cons(z1, z2), Cons(z3, z4)) -> c11(LOOKVAR(z0, z2, z4)) [0] LOOKNAME[ITE](False, z0, Cons(z1, z2)) -> c14(LOOKNAME(z0, z2)) [0] LOOKBODY[ITE](False, z0, Cons(z1, z2)) -> c16(LOOKBODY(z0, z2)) [0] EEVAL[ITE](False, ITE(z0, z1, z2), z3, z4, z5) -> c17(EEVAL(z2, z3, z4, z5)) [0] EEVAL[ITE](True, ITE(z0, z1, z2), z3, z4, z5) -> c18(EEVAL(z1, z3, z4, z5)) [0] 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)) [0] 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)) [0] 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)) [0] EEVAL[LET][LET](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> c22(APPLY(z0, z6, z7)) [0] RUN[LET](z0, z1, z2, z3, z4) -> c28(EEVAL(z3, Cons(z4, Nil), Cons(z1, Nil), z0)) [0] EEVAL[LET][LET][LET](z0, z1, z2, z3, z4, z5, z6) -> c29(EEVAL(z4, Cons(z5, Nil), Cons(z6, Nil), z3)) [0] EEVAL[FALSE][ITE](False, Fun(z0, z1), z2, z3, z4) -> c1(EEVAL[FALSE][LET](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4))) [0] RUN[LET][LET](z0, z1, z2, z3) -> c1(RUN[LET](z0, z1, z2, z3, lookname(z2, z0))) [0] RUN[LET][LET](z0, z1, z2, z3) -> c1(LOOKNAME(z2, z0)) [0] 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)))) [0] EEVAL[FALSE][ITE](True, Eq(z0, z1), z2, z3, z4) -> c1(EQEXP(eeval(z0, z2, z3, z4), eeval(z1, z2, z3, z4))) [0] lookname(z0, Cons(Fun(z1, z2), z3)) -> lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) [0] lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z1 [0] lookname[Ite](False, z0, Cons(z1, z2)) -> lookname(z0, z2) [0] !EQ(S(z0), S(z1)) -> !EQ(z0, z1) [0] !EQ(0, S(z0)) -> False [0] !EQ(S(z0), 0) -> False [0] !EQ(0, 0) -> True [0] eeval(Fun(z0, z1), z2, z3, z4) -> eeval[False][Let](Fun(z0, z1), z2, z3, z4, lookbody(z0, z4)) [0] 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) [0] eeval(Error(z0, z1), z2, z3, z4) -> eeval[False][Ite](False, Error(z0, z1), z2, z3, z4) [0] eeval(F, z0, z1, z2) -> F [0] eeval(T, z0, z1, z2) -> T [0] eeval(ITE(z0, z1, z2), z3, z4, z5) -> eeval[Ite](checkConstrExp(eeval(z0, z3, z4, z5), T), ITE(z0, z1, z2), z3, z4, z5) [0] eeval(Bsf(z0, z1, z2), z3, z4, z5) -> eeval[Let](Bsf(z0, z1, z2), z3, z4, z5, eeval(z1, z3, z4, z5)) [0] eeval(Var(z0), z1, z2, z3) -> lookvar(z0, z1, z2) [0] eeval[False][Let](Fun(z0, z1), z2, z3, z4, z5) -> eeval[False][Let][Let](Fun(z0, z1), z2, z3, z4, z5, lookname(z0, z4)) [0] lookbody(z0, Cons(Fun(z1, z2), z3)) -> lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) [0] lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) -> z2 [0] lookbody[Ite](False, z0, Cons(z1, z2)) -> lookbody(z0, z2) [0] 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)) [0] eeval[Let][Let][Let](z0, z1, z2, z3, z4, z5, z6) -> eeval(z4, Cons(z5, Nil), Cons(z6, Nil), z3) [0] eeval[True][Ite](False, z0, z1, z2, z3) -> F [0] eeval[True][Ite](True, z0, z1, z2, z3) -> T [0] eqExp(Error(z0, z1), Error(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) [0] eqExp(Error(z0, z1), F) -> False [0] eqExp(Error(z0, z1), T) -> False [0] eqExp(Error(z0, z1), Fun(z2, z3)) -> False [0] eqExp(Error(z0, z1), Eq(z2, z3)) -> False [0] eqExp(Error(z0, z1), ITE(z2, z3, z4)) -> False [0] eqExp(Error(z0, z1), Bsf(z2, z3, z4)) -> False [0] eqExp(Error(z0, z1), Var(z2)) -> False [0] eqExp(F, Error(z0, z1)) -> False [0] eqExp(F, F) -> True [0] eqExp(F, T) -> False [0] eqExp(F, Fun(z0, z1)) -> False [0] eqExp(F, Eq(z0, z1)) -> False [0] eqExp(F, ITE(z0, z1, z2)) -> False [0] eqExp(F, Bsf(z0, z1, z2)) -> False [0] eqExp(F, Var(z0)) -> False [0] eqExp(T, Error(z0, z1)) -> False [0] eqExp(T, F) -> False [0] eqExp(T, T) -> True [0] eqExp(T, Fun(z0, z1)) -> False [0] eqExp(T, Eq(z0, z1)) -> False [0] eqExp(T, ITE(z0, z1, z2)) -> False [0] eqExp(T, Bsf(z0, z1, z2)) -> False [0] eqExp(T, Var(z0)) -> False [0] eqExp(Fun(z0, z1), Error(z2, z3)) -> False [0] eqExp(Fun(z0, z1), F) -> False [0] eqExp(Fun(z0, z1), T) -> False [0] eqExp(Fun(z0, z1), Fun(z2, z3)) -> and(!EQ(z0, z2), eqExp(z1, z3)) [0] eqExp(Fun(z0, z1), Eq(z2, z3)) -> False [0] eqExp(Fun(z0, z1), ITE(z2, z3, z4)) -> False [0] eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) -> False [0] eqExp(Fun(z0, z1), Var(z2)) -> False [0] eqExp(Eq(z0, z1), Error(z2, z3)) -> False [0] eqExp(Eq(z0, z1), F) -> False [0] eqExp(Eq(z0, z1), T) -> False [0] eqExp(Eq(z0, z1), Fun(z2, z3)) -> False [0] eqExp(Eq(z0, z1), Eq(z2, z3)) -> and(eqExp(z0, z2), eqExp(z1, z3)) [0] eqExp(Eq(z0, z1), ITE(z2, z3, z4)) -> False [0] eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) -> False [0] eqExp(Eq(z0, z1), Var(z2)) -> False [0] eqExp(ITE(z0, z1, z2), Error(z3, z4)) -> False [0] eqExp(ITE(z0, z1, z2), F) -> False [0] eqExp(ITE(z0, z1, z2), T) -> False [0] eqExp(ITE(z0, z1, z2), Fun(z3, z4)) -> False [0] eqExp(ITE(z0, z1, z2), Eq(z3, z4)) -> False [0] eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) -> and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) [0] eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) -> False [0] eqExp(ITE(z0, z1, z2), Var(z3)) -> False [0] eqExp(Bsf(z0, z1, z2), Error(z3, z4)) -> False [0] eqExp(Bsf(z0, z1, z2), F) -> False [0] eqExp(Bsf(z0, z1, z2), T) -> False [0] eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) -> False [0] eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) -> False [0] eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) -> False [0] eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) -> and(True, and(eqExp(z1, z4), eqExp(z2, z5))) [0] eqExp(Bsf(z0, z1, z2), Var(z3)) -> False [0] eqExp(Var(z0), Error(z1, z2)) -> False [0] eqExp(Var(z0), F) -> False [0] eqExp(Var(z0), T) -> False [0] eqExp(Var(z0), Fun(z1, z2)) -> False [0] eqExp(Var(z0), Eq(z1, z2)) -> False [0] eqExp(Var(z0), ITE(z1, z2, z3)) -> False [0] eqExp(Var(z0), Bsf(z1, z2, z3)) -> False [0] eqExp(Var(z0), Var(z1)) -> !EQ(z0, z1) [0] eeval[Ite](False, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z2, z3, z4, z5) [0] eeval[Ite](True, ITE(z0, z1, z2), z3, z4, z5) -> eeval(z1, z3, z4, z5) [0] checkConstrExp(Error(z0, z1), T) -> False [0] checkConstrExp(F, T) -> False [0] checkConstrExp(T, T) -> True [0] checkConstrExp(Fun(z0, z1), T) -> False [0] checkConstrExp(Eq(z0, z1), T) -> False [0] checkConstrExp(ITE(z0, z1, z2), T) -> False [0] checkConstrExp(Bsf(z0, z1, z2), T) -> False [0] checkConstrExp(Var(z0), T) -> False [0] 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)) [0] lookvar(z0, Cons(z1, z2), z3) -> lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) [0] lookvar[Ite](False, z0, Cons(z1, z2), Cons(z3, z4)) -> lookvar(z0, z2, z4) [0] lookvar[Ite](True, z0, z1, Cons(z2, z3)) -> z2 [0] eeval[Let][Let](Bsf(z0, z1, z2), z3, z4, z5, z6, z7) -> apply(z0, z6, z7) [0] apply(z0, z1, z2) -> apply[Ite](eqExp(z1, z2), z0, z1, z2) [0] apply[Ite](False, z0, z1, z2) -> F [0] apply[Ite](True, z0, z1, z2) -> T [0] and(False, False) -> False [0] and(True, False) -> False [0] and(False, True) -> False [0] and(True, True) -> True [0] !EQ'(v0, v1) -> const4 [0] LOOKVAR[ITE](v0, v1, v2, v3) -> const7 [0] LOOKNAME[ITE](v0, v1, v2) -> const5 [0] LOOKBODY[ITE](v0, v1, v2) -> const6 [0] EEVAL[ITE](v0, v1, v2, v3, v4) -> const8 [0] EEVAL[FALSE][LET](v0, v1, v2, v3, v4) -> null_EEVAL[FALSE][LET] [0] EEVAL[FALSE][LET][LET](v0, v1, v2, v3, v4, v5) -> const10 [0] EEVAL[LET](v0, v1, v2, v3, v4) -> const2 [0] EEVAL[LET][LET](v0, v1, v2, v3, v4, v5) -> const12 [0] RUN[LET](v0, v1, v2, v3, v4) -> null_RUN[LET] [0] EEVAL[LET][LET][LET](v0, v1, v2, v3, v4, v5, v6) -> const11 [0] EEVAL[FALSE][ITE](v0, v1, v2, v3, v4) -> null_EEVAL[FALSE][ITE] [0] RUN[LET][LET](v0, v1, v2, v3) -> null_RUN[LET][LET] [0] RUN(v0, v1) -> null_RUN [0] lookname(v0, v1) -> null_lookname [0] lookname[Ite](v0, v1, v2) -> null_lookname[Ite] [0] !EQ(v0, v1) -> null_!EQ [0] eeval(v0, v1, v2, v3) -> null_eeval [0] eeval[False][Let](v0, v1, v2, v3, v4) -> null_eeval[False][Let] [0] lookbody(v0, v1) -> null_lookbody [0] lookbody[Ite](v0, v1, v2) -> null_lookbody[Ite] [0] eeval[False][Let][Let](v0, v1, v2, v3, v4, v5) -> null_eeval[False][Let][Let] [0] eeval[Let][Let][Let](v0, v1, v2, v3, v4, v5, v6) -> null_eeval[Let][Let][Let] [0] eeval[True][Ite](v0, v1, v2, v3, v4) -> null_eeval[True][Ite] [0] eqExp(v0, v1) -> null_eqExp [0] eeval[Ite](v0, v1, v2, v3, v4) -> null_eeval[Ite] [0] checkConstrExp(v0, v1) -> null_checkConstrExp [0] eeval[Let](v0, v1, v2, v3, v4) -> null_eeval[Let] [0] lookvar(v0, v1, v2) -> null_lookvar [0] lookvar[Ite](v0, v1, v2, v3) -> null_lookvar[Ite] [0] eeval[Let][Let](v0, v1, v2, v3, v4, v5) -> null_eeval[Let][Let] [0] apply(v0, v1, v2) -> null_apply [0] apply[Ite](v0, v1, v2, v3) -> null_apply[Ite] [0] and(v0, v1) -> null_and [0] The TRS has the following type information: EEVAL :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> c30:c34:c35:c37:c38:c31:c32:c33:c36 Fun :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] c30 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN -> c175 -> c30:c34:c35:c37:c38:c31:c32:c33:c36 EEVAL[FALSE][LET] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN lookbody :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] LOOKBODY :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> c175 F :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] c34 :: c30:c34:c35:c37:c38:c31:c32:c33:c36 T :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] c35 :: c30:c34:c35:c37:c38:c31:c32:c33:c36 Bsf :: a -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] c37 :: c21:const2 -> c30:c34:c35:c37:c38:c31:c32:c33:c36 -> c30:c34:c35:c37:c38:c31:c32:c33:c36 EEVAL[LET] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> c21:const2 eeval :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] Var :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] c38 :: c189 -> c30:c34:c35:c37:c38:c31:c32:c33:c36 LOOKVAR :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> c189 EQEXP :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN Error :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] c42 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c43 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c44 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN Eq :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] c45 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN ITE :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] c46 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c47 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c48 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c49 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c50 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c51 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c52 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c53 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c54 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c55 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c56 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c57 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c58 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c59 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c60 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c61 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c62 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c63 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c64 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c65 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c66 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c67 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c70 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c71 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c72 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c73 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c74 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c75 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c76 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c77 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c80 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c81 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c82 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c83 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c84 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c85 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c86 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c87 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c91 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c92 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c93 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c94 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c95 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c96 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c97 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c98 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c101 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c102 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c103 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c104 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c105 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c106 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c107 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c108 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c109 :: c:const4 -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN !EQ' :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> c:const4 LOOKNAME :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN Cons :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil c174 :: c14:const5 -> c:const4 -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN LOOKNAME[ITE] :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> c14:const5 !EQ :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and c175 :: c16:const6 -> c:const4 -> c175 LOOKBODY[ITE] :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> c16:const6 c189 :: c11:const7 -> c:const4 -> c189 LOOKVAR[ITE] :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> c11:const7 c31 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN -> c30:c34:c35:c37:c38:c31:c32:c33:c36 -> c30:c34:c35:c37:c38:c31:c32:c33:c36 c32 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN -> c30:c34:c35:c37:c38:c31:c32:c33:c36 -> c30:c34:c35:c37:c38:c31:c32:c33:c36 c33 :: c30:c34:c35:c37:c38:c31:c32:c33:c36 c36 :: c17:c18:const8 -> c30:c34:c35:c37:c38:c31:c32:c33:c36 -> c30:c34:c35:c37:c38:c31:c32:c33:c36 EEVAL[ITE] :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> c17:c18:const8 checkConstrExp :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and c40 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c41 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c68 :: c:const4 -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c69 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c78 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c79 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c88 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c89 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c90 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c99 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c100 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN APPLY :: a -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> c188 c188 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN -> c188 S :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] c :: c:const4 -> c:const4 False :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and c11 :: c189 -> c11:const7 c14 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN -> c14:const5 c16 :: c175 -> c16:const6 c17 :: c30:c34:c35:c37:c38:c31:c32:c33:c36 -> c17:c18:const8 True :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and c18 :: c30:c34:c35:c37:c38:c31:c32:c33:c36 -> c17:c18:const8 c19 :: c20:const10 -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN EEVAL[FALSE][LET][LET] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> c20:const10 lookname :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] c20 :: c29:const11 -> c30:c34:c35:c37:c38:c31:c32:c33:c36 -> c20:const10 EEVAL[LET][LET][LET] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> c29:const11 c21 :: c22:const12 -> c30:c34:c35:c37:c38:c31:c32:c33:c36 -> c21:const2 EEVAL[LET][LET] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> c22:const12 c22 :: c188 -> c22:const12 RUN[LET] :: Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c28 :: c30:c34:c35:c37:c38:c31:c32:c33:c36 -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN Nil :: Cons:Nil c29 :: c30:c34:c35:c37:c38:c31:c32:c33:c36 -> c29:const11 EEVAL[FALSE][ITE] :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN c1 :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN RUN[LET][LET] :: Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN RUN :: Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN lookname[Ite] :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] 0 :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] eeval[False][Let] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] eeval[True][Ite] :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] eqExp :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and eeval[False][Ite] :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] eeval[Ite] :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] eeval[Let] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] lookvar :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] eeval[False][Let][Let] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] lookbody[Ite] :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] eeval[Let][Let][Let] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] and :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and eeval[Let][Let] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] lookvar[Ite] :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Cons:Nil -> Cons:Nil -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] apply :: a -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] apply[Ite] :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and -> a -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] -> Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] const4 :: c:const4 const7 :: c11:const7 const5 :: c14:const5 const6 :: c16:const6 const8 :: c17:c18:const8 null_EEVAL[FALSE][LET] :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN const10 :: c20:const10 const2 :: c21:const2 const12 :: c22:const12 null_RUN[LET] :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN const11 :: c29:const11 null_EEVAL[FALSE][ITE] :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN null_RUN[LET][LET] :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN null_RUN :: 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:c174:c40:c41:c68:c69:c78:c79:c88:c89:c90:c99:c100:c19:c28:c1:null_EEVAL[FALSE][LET]:null_RUN[LET]:null_EEVAL[FALSE][ITE]:null_RUN[LET][LET]:null_RUN null_lookname :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_lookname[Ite] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_!EQ :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and null_eeval :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_eeval[False][Let] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_lookbody :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_lookbody[Ite] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_eeval[False][Let][Let] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_eeval[Let][Let][Let] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_eeval[True][Ite] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_eqExp :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and null_eeval[Ite] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_checkConstrExp :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and null_eeval[Let] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_lookvar :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_lookvar[Ite] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_eeval[Let][Let] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_apply :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_apply[Ite] :: Fun:F:T:Bsf:Var:Error:Eq:ITE:S:0:eeval[False][Ite]:null_lookname:null_lookname[Ite]:null_eeval:null_eeval[False][Let]:null_lookbody:null_lookbody[Ite]:null_eeval[False][Let][Let]:null_eeval[Let][Let][Let]:null_eeval[True][Ite]:null_eeval[Ite]:null_eeval[Let]:null_lookvar:null_lookvar[Ite]:null_eeval[Let][Let]:null_apply:null_apply[Ite] null_and :: False:True:null_!EQ:null_eqExp:null_checkConstrExp:null_and const :: c175 const1 :: a const3 :: c189 const9 :: c188 Rewrite Strategy: INNERMOST ---------------------------------------- (55) 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)) ---------------------------------------- (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)) 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 ---------------------------------------- (57) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 4 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)) 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 ---------------------------------------- (59) 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)) ---------------------------------------- (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)) 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 ---------------------------------------- (61) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 4 trailing tuple parts ---------------------------------------- (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)) 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 ---------------------------------------- (63) 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)) ---------------------------------------- (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(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 ---------------------------------------- (65) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 4 trailing tuple parts ---------------------------------------- (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(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 ---------------------------------------- (67) 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)) ---------------------------------------- (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(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 ---------------------------------------- (69) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (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(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 ---------------------------------------- (71) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (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(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 ---------------------------------------- (73) 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)) ---------------------------------------- (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 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 ---------------------------------------- (75) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 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 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 ---------------------------------------- (77) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (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 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 ---------------------------------------- (79) 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)) ---------------------------------------- (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)) 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 ---------------------------------------- (81) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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)) 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 ---------------------------------------- (83) 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)))) ---------------------------------------- (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)) 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 ---------------------------------------- (85) 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))) ---------------------------------------- (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(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 ---------------------------------------- (87) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing nodes: 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(Error(z0, z1), x1), z2, z3, z4) -> c1(EQEXP(eeval[False][Ite](False, Error(z0, z1), z2, z3, z4), eeval(x1, z2, z3, z4))) ---------------------------------------- (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(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 ---------------------------------------- (89) 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))) ---------------------------------------- (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(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 ---------------------------------------- (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(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 ---------------------------------------- (93) 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))) ---------------------------------------- (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(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 ---------------------------------------- (95) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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(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 ---------------------------------------- (97) 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))) ---------------------------------------- (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, 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 ---------------------------------------- (99) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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, 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 ---------------------------------------- (101) 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)) ---------------------------------------- (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, 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 ---------------------------------------- (103) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 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, 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 ---------------------------------------- (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, 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 ---------------------------------------- (107) 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)) ---------------------------------------- (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, 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 ---------------------------------------- (109) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 3 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, 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 ---------------------------------------- (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, 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 ---------------------------------------- (113) 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)) ---------------------------------------- (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(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 ---------------------------------------- (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(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 ---------------------------------------- (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(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 ---------------------------------------- (119) 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)) ---------------------------------------- (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(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 ---------------------------------------- (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(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 ---------------------------------------- (123) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (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(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 ---------------------------------------- (125) 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)) ---------------------------------------- (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(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 ---------------------------------------- (127) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (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(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 ---------------------------------------- (129) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (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(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 ---------------------------------------- (131) 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)) ---------------------------------------- (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, 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 ---------------------------------------- (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, 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 ---------------------------------------- (135) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (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, 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 ---------------------------------------- (137) 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)) ---------------------------------------- (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(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 ---------------------------------------- (139) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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(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 ---------------------------------------- (141) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (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(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 ---------------------------------------- (143) 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)) ---------------------------------------- (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(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 ---------------------------------------- (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(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 ---------------------------------------- (147) 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)) ---------------------------------------- (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(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 ---------------------------------------- (149) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 3 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(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 ---------------------------------------- (151) 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)) ---------------------------------------- (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(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 ---------------------------------------- (153) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 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(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 ---------------------------------------- (155) 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)) ---------------------------------------- (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(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 ---------------------------------------- (157) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 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(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 ---------------------------------------- (159) 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))) ---------------------------------------- (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(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 ---------------------------------------- (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(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 ---------------------------------------- (163) 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))) ---------------------------------------- (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(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 ---------------------------------------- (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(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 ---------------------------------------- (167) 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))) ---------------------------------------- (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(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 ---------------------------------------- (169) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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(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 ---------------------------------------- (171) 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)) ---------------------------------------- (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(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 ---------------------------------------- (173) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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(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 ---------------------------------------- (175) 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)) ---------------------------------------- (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(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 ---------------------------------------- (177) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 3 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(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 ---------------------------------------- (179) 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)) ---------------------------------------- (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(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 ---------------------------------------- (181) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (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(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 ---------------------------------------- (183) 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)) ---------------------------------------- (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(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 ---------------------------------------- (185) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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(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 ---------------------------------------- (187) 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))) ---------------------------------------- (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(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 ---------------------------------------- (189) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 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(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 ---------------------------------------- (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(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 ---------------------------------------- (193) 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)) ---------------------------------------- (194) 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 ---------------------------------------- (195) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing tuple parts ---------------------------------------- (196) 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 ---------------------------------------- (197) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (198) 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 ---------------------------------------- (199) 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)) ---------------------------------------- (200) 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 ---------------------------------------- (201) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (202) 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 ---------------------------------------- (203) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (204) 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 ---------------------------------------- (205) 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)) ---------------------------------------- (206) 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 ---------------------------------------- (207) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (208) 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 ---------------------------------------- (209) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (210) 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