/export/starexec/sandbox/solver/bin/starexec_run_rcdcRelativeAlsoLower /export/starexec/sandbox/benchmark/theBenchmark.xml /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- KILLED proof of /export/starexec/sandbox/benchmark/theBenchmark.xml # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty The Derivational Complexity (innermost) of the given DCpxTrs could be proven to be BOUNDS(1, INF). (0) DCpxTrs (1) DerivationalComplexityToRuntimeComplexityProof [BOTH BOUNDS(ID, ID), 0 ms] (2) CpxRelTRS (3) SInnermostTerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 382 ms] (4) CpxRelTRS (5) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CpxRelTRS (7) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (8) typed CpxTrs (9) OrderProof [LOWER BOUND(ID), 0 ms] (10) typed CpxTrs (11) RewriteLemmaProof [LOWER BOUND(ID), 31.0 s] (12) BOUNDS(1, INF) (13) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 0 ms] (14) TRS for Loop Detection (15) RelTrsToTrsProof [UPPER BOUND(ID), 0 ms] (16) CpxTRS (17) NonCtorToCtorProof [UPPER BOUND(ID), 0 ms] (18) CpxRelTRS (19) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (20) CpxWeightedTrs (21) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (22) CpxTypedWeightedTrs (23) CompletionProof [UPPER BOUND(ID), 0 ms] (24) CpxTypedWeightedCompleteTrs (25) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 2 ms] (26) CpxRNTS (27) CompletionProof [UPPER BOUND(ID), 0 ms] (28) CpxTypedWeightedCompleteTrs (29) NarrowingProof [BOTH BOUNDS(ID, ID), 18.5 s] (30) CpxTypedWeightedCompleteTrs (31) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (32) CpxRNTS (33) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (34) CpxRNTS (35) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (36) CdtProblem (37) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (38) CdtProblem (39) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (40) CdtProblem (41) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (42) CdtProblem (43) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (44) CdtProblem (45) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 43 ms] (46) CdtProblem (47) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 16 ms] (48) CdtProblem (49) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (50) CdtProblem (51) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (52) CdtProblem (53) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (54) CdtProblem (55) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 3 ms] (56) CdtProblem (57) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (58) CdtProblem (59) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 83 ms] (60) CdtProblem (61) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 17 ms] (62) CdtProblem (63) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 15 ms] (64) CdtProblem (65) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 4 ms] (66) CdtProblem (67) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (68) CdtProblem (69) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (70) CdtProblem (71) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 54 ms] (72) CdtProblem (73) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 2 ms] (74) CdtProblem (75) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 30 ms] (76) CdtProblem (77) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (78) CdtProblem (79) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 86 ms] (80) CdtProblem (81) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 6 ms] (82) CdtProblem (83) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (84) CdtProblem (85) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (86) CdtProblem (87) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (88) CdtProblem (89) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 9 ms] (90) CdtProblem (91) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 3 ms] (92) CdtProblem (93) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 32 ms] (94) CdtProblem (95) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (96) CdtProblem (97) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (98) CdtProblem (99) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 5 ms] (100) CdtProblem (101) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (102) CdtProblem (103) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (104) CdtProblem (105) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 12 ms] (106) CdtProblem (107) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 11 ms] (108) CdtProblem (109) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (110) CdtProblem (111) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (112) CdtProblem (113) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 13 ms] (114) CdtProblem (115) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (116) CdtProblem (117) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (118) CdtProblem (119) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (120) CdtProblem (121) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (122) CdtProblem (123) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 6 ms] (124) CdtProblem (125) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (126) CdtProblem (127) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 27 ms] (128) CdtProblem (129) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 44 ms] (130) CdtProblem (131) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (132) CdtProblem (133) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 42 ms] (134) CdtProblem (135) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (136) CdtProblem (137) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 102 ms] (138) CdtProblem (139) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 44 ms] (140) CdtProblem (141) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (142) CdtProblem (143) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (144) CdtProblem (145) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 34 ms] (146) CdtProblem (147) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (148) CdtProblem (149) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 50 ms] (150) CdtProblem (151) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (152) CdtProblem (153) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (154) CdtProblem (155) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 59 ms] (156) CdtProblem (157) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 73 ms] (158) CdtProblem (159) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (160) CdtProblem (161) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (162) CdtProblem (163) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 9 ms] (164) CdtProblem (165) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (166) CdtProblem (167) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (168) CdtProblem ---------------------------------------- (0) Obligation: The Derivational Complexity (innermost) of the given DCpxTrs could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: active(fact(X)) -> mark(if(zero(X), s(0), prod(X, fact(p(X))))) active(add(0, X)) -> mark(X) active(add(s(X), Y)) -> mark(s(add(X, Y))) active(prod(0, X)) -> mark(0) active(prod(s(X), Y)) -> mark(add(Y, prod(X, Y))) active(if(true, X, Y)) -> mark(X) active(if(false, X, Y)) -> mark(Y) active(zero(0)) -> mark(true) active(zero(s(X))) -> mark(false) active(p(s(X))) -> mark(X) mark(fact(X)) -> active(fact(mark(X))) mark(if(X1, X2, X3)) -> active(if(mark(X1), X2, X3)) mark(zero(X)) -> active(zero(mark(X))) mark(s(X)) -> active(s(mark(X))) mark(0) -> active(0) mark(prod(X1, X2)) -> active(prod(mark(X1), mark(X2))) mark(p(X)) -> active(p(mark(X))) mark(add(X1, X2)) -> active(add(mark(X1), mark(X2))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(X)) -> fact(X) fact(active(X)) -> fact(X) if(mark(X1), X2, X3) -> if(X1, X2, X3) if(X1, mark(X2), X3) -> if(X1, X2, X3) if(X1, X2, mark(X3)) -> if(X1, X2, X3) if(active(X1), X2, X3) -> if(X1, X2, X3) if(X1, active(X2), X3) -> if(X1, X2, X3) if(X1, X2, active(X3)) -> if(X1, X2, X3) zero(mark(X)) -> zero(X) zero(active(X)) -> zero(X) s(mark(X)) -> s(X) s(active(X)) -> s(X) prod(mark(X1), X2) -> prod(X1, X2) prod(X1, mark(X2)) -> prod(X1, X2) prod(active(X1), X2) -> prod(X1, X2) prod(X1, active(X2)) -> prod(X1, X2) p(mark(X)) -> p(X) p(active(X)) -> p(X) add(mark(X1), X2) -> add(X1, X2) add(X1, mark(X2)) -> add(X1, X2) add(active(X1), X2) -> add(X1, X2) add(X1, active(X2)) -> add(X1, X2) S is empty. Rewrite Strategy: INNERMOST ---------------------------------------- (1) DerivationalComplexityToRuntimeComplexityProof (BOTH BOUNDS(ID, ID)) The following rules have been added to S to convert the given derivational complexity problem to a runtime complexity problem: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(x_1)) -> active(encArg(x_1)) encArg(cons_mark(x_1)) -> mark(encArg(x_1)) encArg(cons_fact(x_1)) -> fact(encArg(x_1)) encArg(cons_if(x_1, x_2, x_3)) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encArg(cons_zero(x_1)) -> zero(encArg(x_1)) encArg(cons_s(x_1)) -> s(encArg(x_1)) encArg(cons_prod(x_1, x_2)) -> prod(encArg(x_1), encArg(x_2)) encArg(cons_p(x_1)) -> p(encArg(x_1)) encArg(cons_add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) encode_active(x_1) -> active(encArg(x_1)) encode_fact(x_1) -> fact(encArg(x_1)) encode_mark(x_1) -> mark(encArg(x_1)) encode_if(x_1, x_2, x_3) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encode_zero(x_1) -> zero(encArg(x_1)) encode_s(x_1) -> s(encArg(x_1)) encode_0 -> 0 encode_prod(x_1, x_2) -> prod(encArg(x_1), encArg(x_2)) encode_p(x_1) -> p(encArg(x_1)) encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) encode_true -> true encode_false -> false ---------------------------------------- (2) 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: active(fact(X)) -> mark(if(zero(X), s(0), prod(X, fact(p(X))))) active(add(0, X)) -> mark(X) active(add(s(X), Y)) -> mark(s(add(X, Y))) active(prod(0, X)) -> mark(0) active(prod(s(X), Y)) -> mark(add(Y, prod(X, Y))) active(if(true, X, Y)) -> mark(X) active(if(false, X, Y)) -> mark(Y) active(zero(0)) -> mark(true) active(zero(s(X))) -> mark(false) active(p(s(X))) -> mark(X) mark(fact(X)) -> active(fact(mark(X))) mark(if(X1, X2, X3)) -> active(if(mark(X1), X2, X3)) mark(zero(X)) -> active(zero(mark(X))) mark(s(X)) -> active(s(mark(X))) mark(0) -> active(0) mark(prod(X1, X2)) -> active(prod(mark(X1), mark(X2))) mark(p(X)) -> active(p(mark(X))) mark(add(X1, X2)) -> active(add(mark(X1), mark(X2))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(X)) -> fact(X) fact(active(X)) -> fact(X) if(mark(X1), X2, X3) -> if(X1, X2, X3) if(X1, mark(X2), X3) -> if(X1, X2, X3) if(X1, X2, mark(X3)) -> if(X1, X2, X3) if(active(X1), X2, X3) -> if(X1, X2, X3) if(X1, active(X2), X3) -> if(X1, X2, X3) if(X1, X2, active(X3)) -> if(X1, X2, X3) zero(mark(X)) -> zero(X) zero(active(X)) -> zero(X) s(mark(X)) -> s(X) s(active(X)) -> s(X) prod(mark(X1), X2) -> prod(X1, X2) prod(X1, mark(X2)) -> prod(X1, X2) prod(active(X1), X2) -> prod(X1, X2) prod(X1, active(X2)) -> prod(X1, X2) p(mark(X)) -> p(X) p(active(X)) -> p(X) add(mark(X1), X2) -> add(X1, X2) add(X1, mark(X2)) -> add(X1, X2) add(active(X1), X2) -> add(X1, X2) add(X1, active(X2)) -> add(X1, X2) The (relative) TRS S consists of the following rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(x_1)) -> active(encArg(x_1)) encArg(cons_mark(x_1)) -> mark(encArg(x_1)) encArg(cons_fact(x_1)) -> fact(encArg(x_1)) encArg(cons_if(x_1, x_2, x_3)) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encArg(cons_zero(x_1)) -> zero(encArg(x_1)) encArg(cons_s(x_1)) -> s(encArg(x_1)) encArg(cons_prod(x_1, x_2)) -> prod(encArg(x_1), encArg(x_2)) encArg(cons_p(x_1)) -> p(encArg(x_1)) encArg(cons_add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) encode_active(x_1) -> active(encArg(x_1)) encode_fact(x_1) -> fact(encArg(x_1)) encode_mark(x_1) -> mark(encArg(x_1)) encode_if(x_1, x_2, x_3) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encode_zero(x_1) -> zero(encArg(x_1)) encode_s(x_1) -> s(encArg(x_1)) encode_0 -> 0 encode_prod(x_1, x_2) -> prod(encArg(x_1), encArg(x_2)) encode_p(x_1) -> p(encArg(x_1)) encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) encode_true -> true encode_false -> false Rewrite Strategy: INNERMOST ---------------------------------------- (3) SInnermostTerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) proved innermost termination of relative rules ---------------------------------------- (4) 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: active(fact(X)) -> mark(if(zero(X), s(0), prod(X, fact(p(X))))) active(add(0, X)) -> mark(X) active(add(s(X), Y)) -> mark(s(add(X, Y))) active(prod(0, X)) -> mark(0) active(prod(s(X), Y)) -> mark(add(Y, prod(X, Y))) active(if(true, X, Y)) -> mark(X) active(if(false, X, Y)) -> mark(Y) active(zero(0)) -> mark(true) active(zero(s(X))) -> mark(false) active(p(s(X))) -> mark(X) mark(fact(X)) -> active(fact(mark(X))) mark(if(X1, X2, X3)) -> active(if(mark(X1), X2, X3)) mark(zero(X)) -> active(zero(mark(X))) mark(s(X)) -> active(s(mark(X))) mark(0) -> active(0) mark(prod(X1, X2)) -> active(prod(mark(X1), mark(X2))) mark(p(X)) -> active(p(mark(X))) mark(add(X1, X2)) -> active(add(mark(X1), mark(X2))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(X)) -> fact(X) fact(active(X)) -> fact(X) if(mark(X1), X2, X3) -> if(X1, X2, X3) if(X1, mark(X2), X3) -> if(X1, X2, X3) if(X1, X2, mark(X3)) -> if(X1, X2, X3) if(active(X1), X2, X3) -> if(X1, X2, X3) if(X1, active(X2), X3) -> if(X1, X2, X3) if(X1, X2, active(X3)) -> if(X1, X2, X3) zero(mark(X)) -> zero(X) zero(active(X)) -> zero(X) s(mark(X)) -> s(X) s(active(X)) -> s(X) prod(mark(X1), X2) -> prod(X1, X2) prod(X1, mark(X2)) -> prod(X1, X2) prod(active(X1), X2) -> prod(X1, X2) prod(X1, active(X2)) -> prod(X1, X2) p(mark(X)) -> p(X) p(active(X)) -> p(X) add(mark(X1), X2) -> add(X1, X2) add(X1, mark(X2)) -> add(X1, X2) add(active(X1), X2) -> add(X1, X2) add(X1, active(X2)) -> add(X1, X2) The (relative) TRS S consists of the following rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(x_1)) -> active(encArg(x_1)) encArg(cons_mark(x_1)) -> mark(encArg(x_1)) encArg(cons_fact(x_1)) -> fact(encArg(x_1)) encArg(cons_if(x_1, x_2, x_3)) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encArg(cons_zero(x_1)) -> zero(encArg(x_1)) encArg(cons_s(x_1)) -> s(encArg(x_1)) encArg(cons_prod(x_1, x_2)) -> prod(encArg(x_1), encArg(x_2)) encArg(cons_p(x_1)) -> p(encArg(x_1)) encArg(cons_add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) encode_active(x_1) -> active(encArg(x_1)) encode_fact(x_1) -> fact(encArg(x_1)) encode_mark(x_1) -> mark(encArg(x_1)) encode_if(x_1, x_2, x_3) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encode_zero(x_1) -> zero(encArg(x_1)) encode_s(x_1) -> s(encArg(x_1)) encode_0 -> 0 encode_prod(x_1, x_2) -> prod(encArg(x_1), encArg(x_2)) encode_p(x_1) -> p(encArg(x_1)) encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) encode_true -> true encode_false -> false Rewrite Strategy: INNERMOST ---------------------------------------- (5) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (6) 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: active(fact(X)) -> mark(if(zero(X), s(0'), prod(X, fact(p(X))))) active(add(0', X)) -> mark(X) active(add(s(X), Y)) -> mark(s(add(X, Y))) active(prod(0', X)) -> mark(0') active(prod(s(X), Y)) -> mark(add(Y, prod(X, Y))) active(if(true, X, Y)) -> mark(X) active(if(false, X, Y)) -> mark(Y) active(zero(0')) -> mark(true) active(zero(s(X))) -> mark(false) active(p(s(X))) -> mark(X) mark(fact(X)) -> active(fact(mark(X))) mark(if(X1, X2, X3)) -> active(if(mark(X1), X2, X3)) mark(zero(X)) -> active(zero(mark(X))) mark(s(X)) -> active(s(mark(X))) mark(0') -> active(0') mark(prod(X1, X2)) -> active(prod(mark(X1), mark(X2))) mark(p(X)) -> active(p(mark(X))) mark(add(X1, X2)) -> active(add(mark(X1), mark(X2))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(X)) -> fact(X) fact(active(X)) -> fact(X) if(mark(X1), X2, X3) -> if(X1, X2, X3) if(X1, mark(X2), X3) -> if(X1, X2, X3) if(X1, X2, mark(X3)) -> if(X1, X2, X3) if(active(X1), X2, X3) -> if(X1, X2, X3) if(X1, active(X2), X3) -> if(X1, X2, X3) if(X1, X2, active(X3)) -> if(X1, X2, X3) zero(mark(X)) -> zero(X) zero(active(X)) -> zero(X) s(mark(X)) -> s(X) s(active(X)) -> s(X) prod(mark(X1), X2) -> prod(X1, X2) prod(X1, mark(X2)) -> prod(X1, X2) prod(active(X1), X2) -> prod(X1, X2) prod(X1, active(X2)) -> prod(X1, X2) p(mark(X)) -> p(X) p(active(X)) -> p(X) add(mark(X1), X2) -> add(X1, X2) add(X1, mark(X2)) -> add(X1, X2) add(active(X1), X2) -> add(X1, X2) add(X1, active(X2)) -> add(X1, X2) The (relative) TRS S consists of the following rules: encArg(0') -> 0' encArg(true) -> true encArg(false) -> false encArg(cons_active(x_1)) -> active(encArg(x_1)) encArg(cons_mark(x_1)) -> mark(encArg(x_1)) encArg(cons_fact(x_1)) -> fact(encArg(x_1)) encArg(cons_if(x_1, x_2, x_3)) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encArg(cons_zero(x_1)) -> zero(encArg(x_1)) encArg(cons_s(x_1)) -> s(encArg(x_1)) encArg(cons_prod(x_1, x_2)) -> prod(encArg(x_1), encArg(x_2)) encArg(cons_p(x_1)) -> p(encArg(x_1)) encArg(cons_add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) encode_active(x_1) -> active(encArg(x_1)) encode_fact(x_1) -> fact(encArg(x_1)) encode_mark(x_1) -> mark(encArg(x_1)) encode_if(x_1, x_2, x_3) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encode_zero(x_1) -> zero(encArg(x_1)) encode_s(x_1) -> s(encArg(x_1)) encode_0 -> 0' encode_prod(x_1, x_2) -> prod(encArg(x_1), encArg(x_2)) encode_p(x_1) -> p(encArg(x_1)) encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) encode_true -> true encode_false -> false Rewrite Strategy: INNERMOST ---------------------------------------- (7) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (8) Obligation: Innermost TRS: Rules: active(fact(X)) -> mark(if(zero(X), s(0'), prod(X, fact(p(X))))) active(add(0', X)) -> mark(X) active(add(s(X), Y)) -> mark(s(add(X, Y))) active(prod(0', X)) -> mark(0') active(prod(s(X), Y)) -> mark(add(Y, prod(X, Y))) active(if(true, X, Y)) -> mark(X) active(if(false, X, Y)) -> mark(Y) active(zero(0')) -> mark(true) active(zero(s(X))) -> mark(false) active(p(s(X))) -> mark(X) mark(fact(X)) -> active(fact(mark(X))) mark(if(X1, X2, X3)) -> active(if(mark(X1), X2, X3)) mark(zero(X)) -> active(zero(mark(X))) mark(s(X)) -> active(s(mark(X))) mark(0') -> active(0') mark(prod(X1, X2)) -> active(prod(mark(X1), mark(X2))) mark(p(X)) -> active(p(mark(X))) mark(add(X1, X2)) -> active(add(mark(X1), mark(X2))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(X)) -> fact(X) fact(active(X)) -> fact(X) if(mark(X1), X2, X3) -> if(X1, X2, X3) if(X1, mark(X2), X3) -> if(X1, X2, X3) if(X1, X2, mark(X3)) -> if(X1, X2, X3) if(active(X1), X2, X3) -> if(X1, X2, X3) if(X1, active(X2), X3) -> if(X1, X2, X3) if(X1, X2, active(X3)) -> if(X1, X2, X3) zero(mark(X)) -> zero(X) zero(active(X)) -> zero(X) s(mark(X)) -> s(X) s(active(X)) -> s(X) prod(mark(X1), X2) -> prod(X1, X2) prod(X1, mark(X2)) -> prod(X1, X2) prod(active(X1), X2) -> prod(X1, X2) prod(X1, active(X2)) -> prod(X1, X2) p(mark(X)) -> p(X) p(active(X)) -> p(X) add(mark(X1), X2) -> add(X1, X2) add(X1, mark(X2)) -> add(X1, X2) add(active(X1), X2) -> add(X1, X2) add(X1, active(X2)) -> add(X1, X2) encArg(0') -> 0' encArg(true) -> true encArg(false) -> false encArg(cons_active(x_1)) -> active(encArg(x_1)) encArg(cons_mark(x_1)) -> mark(encArg(x_1)) encArg(cons_fact(x_1)) -> fact(encArg(x_1)) encArg(cons_if(x_1, x_2, x_3)) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encArg(cons_zero(x_1)) -> zero(encArg(x_1)) encArg(cons_s(x_1)) -> s(encArg(x_1)) encArg(cons_prod(x_1, x_2)) -> prod(encArg(x_1), encArg(x_2)) encArg(cons_p(x_1)) -> p(encArg(x_1)) encArg(cons_add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) encode_active(x_1) -> active(encArg(x_1)) encode_fact(x_1) -> fact(encArg(x_1)) encode_mark(x_1) -> mark(encArg(x_1)) encode_if(x_1, x_2, x_3) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encode_zero(x_1) -> zero(encArg(x_1)) encode_s(x_1) -> s(encArg(x_1)) encode_0 -> 0' encode_prod(x_1, x_2) -> prod(encArg(x_1), encArg(x_2)) encode_p(x_1) -> p(encArg(x_1)) encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) encode_true -> true encode_false -> false Types: active :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add fact :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add mark :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add if :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add zero :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add s :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add 0' :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add prod :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add p :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add add :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add true :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add false :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encArg :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_active :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_mark :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_fact :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_if :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_zero :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_s :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_prod :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_p :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_add :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_active :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_fact :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_mark :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_if :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_zero :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_s :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_0 :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_prod :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_p :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_add :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_true :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_false :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add hole_0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add1_4 :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add gen_0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add2_4 :: Nat -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add ---------------------------------------- (9) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: active, mark, if, zero, s, prod, fact, p, add, encArg They will be analysed ascendingly in the following order: active = mark if < active zero < active s < active prod < active fact < active p < active add < active active < encArg if < mark zero < mark s < mark prod < mark fact < mark p < mark add < mark mark < encArg if < encArg zero < encArg s < encArg prod < encArg fact < encArg p < encArg add < encArg ---------------------------------------- (10) Obligation: Innermost TRS: Rules: active(fact(X)) -> mark(if(zero(X), s(0'), prod(X, fact(p(X))))) active(add(0', X)) -> mark(X) active(add(s(X), Y)) -> mark(s(add(X, Y))) active(prod(0', X)) -> mark(0') active(prod(s(X), Y)) -> mark(add(Y, prod(X, Y))) active(if(true, X, Y)) -> mark(X) active(if(false, X, Y)) -> mark(Y) active(zero(0')) -> mark(true) active(zero(s(X))) -> mark(false) active(p(s(X))) -> mark(X) mark(fact(X)) -> active(fact(mark(X))) mark(if(X1, X2, X3)) -> active(if(mark(X1), X2, X3)) mark(zero(X)) -> active(zero(mark(X))) mark(s(X)) -> active(s(mark(X))) mark(0') -> active(0') mark(prod(X1, X2)) -> active(prod(mark(X1), mark(X2))) mark(p(X)) -> active(p(mark(X))) mark(add(X1, X2)) -> active(add(mark(X1), mark(X2))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(X)) -> fact(X) fact(active(X)) -> fact(X) if(mark(X1), X2, X3) -> if(X1, X2, X3) if(X1, mark(X2), X3) -> if(X1, X2, X3) if(X1, X2, mark(X3)) -> if(X1, X2, X3) if(active(X1), X2, X3) -> if(X1, X2, X3) if(X1, active(X2), X3) -> if(X1, X2, X3) if(X1, X2, active(X3)) -> if(X1, X2, X3) zero(mark(X)) -> zero(X) zero(active(X)) -> zero(X) s(mark(X)) -> s(X) s(active(X)) -> s(X) prod(mark(X1), X2) -> prod(X1, X2) prod(X1, mark(X2)) -> prod(X1, X2) prod(active(X1), X2) -> prod(X1, X2) prod(X1, active(X2)) -> prod(X1, X2) p(mark(X)) -> p(X) p(active(X)) -> p(X) add(mark(X1), X2) -> add(X1, X2) add(X1, mark(X2)) -> add(X1, X2) add(active(X1), X2) -> add(X1, X2) add(X1, active(X2)) -> add(X1, X2) encArg(0') -> 0' encArg(true) -> true encArg(false) -> false encArg(cons_active(x_1)) -> active(encArg(x_1)) encArg(cons_mark(x_1)) -> mark(encArg(x_1)) encArg(cons_fact(x_1)) -> fact(encArg(x_1)) encArg(cons_if(x_1, x_2, x_3)) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encArg(cons_zero(x_1)) -> zero(encArg(x_1)) encArg(cons_s(x_1)) -> s(encArg(x_1)) encArg(cons_prod(x_1, x_2)) -> prod(encArg(x_1), encArg(x_2)) encArg(cons_p(x_1)) -> p(encArg(x_1)) encArg(cons_add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) encode_active(x_1) -> active(encArg(x_1)) encode_fact(x_1) -> fact(encArg(x_1)) encode_mark(x_1) -> mark(encArg(x_1)) encode_if(x_1, x_2, x_3) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encode_zero(x_1) -> zero(encArg(x_1)) encode_s(x_1) -> s(encArg(x_1)) encode_0 -> 0' encode_prod(x_1, x_2) -> prod(encArg(x_1), encArg(x_2)) encode_p(x_1) -> p(encArg(x_1)) encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) encode_true -> true encode_false -> false Types: active :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add fact :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add mark :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add if :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add zero :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add s :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add 0' :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add prod :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add p :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add add :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add true :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add false :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encArg :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_active :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_mark :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_fact :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_if :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_zero :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_s :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_prod :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_p :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_add :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_active :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_fact :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_mark :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_if :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_zero :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_s :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_0 :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_prod :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_p :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_add :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_true :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_false :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add hole_0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add1_4 :: 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add gen_0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add2_4 :: Nat -> 0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add Generator Equations: gen_0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add2_4(0) <=> 0' gen_0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add2_4(+(x, 1)) <=> cons_active(gen_0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add2_4(x)) The following defined symbols remain to be analysed: if, active, mark, zero, s, prod, fact, p, add, encArg They will be analysed ascendingly in the following order: active = mark if < active zero < active s < active prod < active fact < active p < active add < active active < encArg if < mark zero < mark s < mark prod < mark fact < mark p < mark add < mark mark < encArg if < encArg zero < encArg s < encArg prod < encArg fact < encArg p < encArg add < encArg ---------------------------------------- (11) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: encArg(gen_0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add2_4(+(1, n9416_4))) -> *3_4, rt in Omega(0) Induction Base: encArg(gen_0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add2_4(+(1, 0))) Induction Step: encArg(gen_0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add2_4(+(1, +(n9416_4, 1)))) ->_R^Omega(0) active(encArg(gen_0':true:false:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add2_4(+(1, n9416_4)))) ->_IH active(*3_4) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (12) BOUNDS(1, INF) ---------------------------------------- (13) RelTrsToDecreasingLoopProblemProof (LOWER BOUND(ID)) Transformed a relative TRS into a decreasing-loop problem. ---------------------------------------- (14) 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: active(fact(X)) -> mark(if(zero(X), s(0), prod(X, fact(p(X))))) active(add(0, X)) -> mark(X) active(add(s(X), Y)) -> mark(s(add(X, Y))) active(prod(0, X)) -> mark(0) active(prod(s(X), Y)) -> mark(add(Y, prod(X, Y))) active(if(true, X, Y)) -> mark(X) active(if(false, X, Y)) -> mark(Y) active(zero(0)) -> mark(true) active(zero(s(X))) -> mark(false) active(p(s(X))) -> mark(X) mark(fact(X)) -> active(fact(mark(X))) mark(if(X1, X2, X3)) -> active(if(mark(X1), X2, X3)) mark(zero(X)) -> active(zero(mark(X))) mark(s(X)) -> active(s(mark(X))) mark(0) -> active(0) mark(prod(X1, X2)) -> active(prod(mark(X1), mark(X2))) mark(p(X)) -> active(p(mark(X))) mark(add(X1, X2)) -> active(add(mark(X1), mark(X2))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(X)) -> fact(X) fact(active(X)) -> fact(X) if(mark(X1), X2, X3) -> if(X1, X2, X3) if(X1, mark(X2), X3) -> if(X1, X2, X3) if(X1, X2, mark(X3)) -> if(X1, X2, X3) if(active(X1), X2, X3) -> if(X1, X2, X3) if(X1, active(X2), X3) -> if(X1, X2, X3) if(X1, X2, active(X3)) -> if(X1, X2, X3) zero(mark(X)) -> zero(X) zero(active(X)) -> zero(X) s(mark(X)) -> s(X) s(active(X)) -> s(X) prod(mark(X1), X2) -> prod(X1, X2) prod(X1, mark(X2)) -> prod(X1, X2) prod(active(X1), X2) -> prod(X1, X2) prod(X1, active(X2)) -> prod(X1, X2) p(mark(X)) -> p(X) p(active(X)) -> p(X) add(mark(X1), X2) -> add(X1, X2) add(X1, mark(X2)) -> add(X1, X2) add(active(X1), X2) -> add(X1, X2) add(X1, active(X2)) -> add(X1, X2) The (relative) TRS S consists of the following rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(x_1)) -> active(encArg(x_1)) encArg(cons_mark(x_1)) -> mark(encArg(x_1)) encArg(cons_fact(x_1)) -> fact(encArg(x_1)) encArg(cons_if(x_1, x_2, x_3)) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encArg(cons_zero(x_1)) -> zero(encArg(x_1)) encArg(cons_s(x_1)) -> s(encArg(x_1)) encArg(cons_prod(x_1, x_2)) -> prod(encArg(x_1), encArg(x_2)) encArg(cons_p(x_1)) -> p(encArg(x_1)) encArg(cons_add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) encode_active(x_1) -> active(encArg(x_1)) encode_fact(x_1) -> fact(encArg(x_1)) encode_mark(x_1) -> mark(encArg(x_1)) encode_if(x_1, x_2, x_3) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encode_zero(x_1) -> zero(encArg(x_1)) encode_s(x_1) -> s(encArg(x_1)) encode_0 -> 0 encode_prod(x_1, x_2) -> prod(encArg(x_1), encArg(x_2)) encode_p(x_1) -> p(encArg(x_1)) encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) encode_true -> true encode_false -> false Rewrite Strategy: INNERMOST ---------------------------------------- (15) RelTrsToTrsProof (UPPER BOUND(ID)) transformed relative TRS to TRS ---------------------------------------- (16) 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: active(fact(X)) -> mark(if(zero(X), s(0), prod(X, fact(p(X))))) active(add(0, X)) -> mark(X) active(add(s(X), Y)) -> mark(s(add(X, Y))) active(prod(0, X)) -> mark(0) active(prod(s(X), Y)) -> mark(add(Y, prod(X, Y))) active(if(true, X, Y)) -> mark(X) active(if(false, X, Y)) -> mark(Y) active(zero(0)) -> mark(true) active(zero(s(X))) -> mark(false) active(p(s(X))) -> mark(X) mark(fact(X)) -> active(fact(mark(X))) mark(if(X1, X2, X3)) -> active(if(mark(X1), X2, X3)) mark(zero(X)) -> active(zero(mark(X))) mark(s(X)) -> active(s(mark(X))) mark(0) -> active(0) mark(prod(X1, X2)) -> active(prod(mark(X1), mark(X2))) mark(p(X)) -> active(p(mark(X))) mark(add(X1, X2)) -> active(add(mark(X1), mark(X2))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(X)) -> fact(X) fact(active(X)) -> fact(X) if(mark(X1), X2, X3) -> if(X1, X2, X3) if(X1, mark(X2), X3) -> if(X1, X2, X3) if(X1, X2, mark(X3)) -> if(X1, X2, X3) if(active(X1), X2, X3) -> if(X1, X2, X3) if(X1, active(X2), X3) -> if(X1, X2, X3) if(X1, X2, active(X3)) -> if(X1, X2, X3) zero(mark(X)) -> zero(X) zero(active(X)) -> zero(X) s(mark(X)) -> s(X) s(active(X)) -> s(X) prod(mark(X1), X2) -> prod(X1, X2) prod(X1, mark(X2)) -> prod(X1, X2) prod(active(X1), X2) -> prod(X1, X2) prod(X1, active(X2)) -> prod(X1, X2) p(mark(X)) -> p(X) p(active(X)) -> p(X) add(mark(X1), X2) -> add(X1, X2) add(X1, mark(X2)) -> add(X1, X2) add(active(X1), X2) -> add(X1, X2) add(X1, active(X2)) -> add(X1, X2) encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(x_1)) -> active(encArg(x_1)) encArg(cons_mark(x_1)) -> mark(encArg(x_1)) encArg(cons_fact(x_1)) -> fact(encArg(x_1)) encArg(cons_if(x_1, x_2, x_3)) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encArg(cons_zero(x_1)) -> zero(encArg(x_1)) encArg(cons_s(x_1)) -> s(encArg(x_1)) encArg(cons_prod(x_1, x_2)) -> prod(encArg(x_1), encArg(x_2)) encArg(cons_p(x_1)) -> p(encArg(x_1)) encArg(cons_add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) encode_active(x_1) -> active(encArg(x_1)) encode_fact(x_1) -> fact(encArg(x_1)) encode_mark(x_1) -> mark(encArg(x_1)) encode_if(x_1, x_2, x_3) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encode_zero(x_1) -> zero(encArg(x_1)) encode_s(x_1) -> s(encArg(x_1)) encode_0 -> 0 encode_prod(x_1, x_2) -> prod(encArg(x_1), encArg(x_2)) encode_p(x_1) -> p(encArg(x_1)) encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) encode_true -> true encode_false -> false S is empty. Rewrite Strategy: INNERMOST ---------------------------------------- (17) NonCtorToCtorProof (UPPER BOUND(ID)) transformed non-ctor to ctor-system ---------------------------------------- (18) 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: mark(0) -> active(0) mark(true) -> active(true) mark(false) -> active(false) mark(c_prod(X1, X2)) -> active(prod(mark(X1), mark(X2))) add(c_active(X1), X2) -> add(X1, X2) p(c_mark(X)) -> p(X) if(c_mark(X1), X2, X3) -> if(X1, X2, X3) if(X1, c_active(X2), X3) -> if(X1, X2, X3) add(X1, c_mark(X2)) -> add(X1, X2) mark(c_s(X)) -> active(s(mark(X))) mark(c_add(X1, X2)) -> active(add(mark(X1), mark(X2))) active(c_p(c_s(X))) -> mark(X) active(c_if(true, X, Y)) -> mark(X) if(X1, X2, c_mark(X3)) -> if(X1, X2, X3) s(c_active(X)) -> s(X) if(X1, X2, c_active(X3)) -> if(X1, X2, X3) active(c_prod(0, X)) -> mark(0) if(X1, c_mark(X2), X3) -> if(X1, X2, X3) prod(c_active(X1), X2) -> prod(X1, X2) add(c_mark(X1), X2) -> add(X1, X2) fact(c_active(X)) -> fact(X) p(c_active(X)) -> p(X) add(X1, c_active(X2)) -> add(X1, X2) s(c_mark(X)) -> s(X) mark(c_fact(X)) -> active(fact(mark(X))) active(c_add(c_s(X), Y)) -> mark(s(add(X, Y))) prod(X1, c_active(X2)) -> prod(X1, X2) active(c_fact(X)) -> mark(if(zero(X), s(0), prod(X, fact(p(X))))) prod(c_mark(X1), X2) -> prod(X1, X2) mark(c_if(X1, X2, X3)) -> active(if(mark(X1), X2, X3)) zero(c_mark(X)) -> zero(X) active(c_add(0, X)) -> mark(X) active(c_prod(c_s(X), Y)) -> mark(add(Y, prod(X, Y))) mark(c_zero(X)) -> active(zero(mark(X))) mark(c_p(X)) -> active(p(mark(X))) active(c_if(false, X, Y)) -> mark(Y) zero(c_active(X)) -> zero(X) active(c_zero(0)) -> mark(true) if(c_active(X1), X2, X3) -> if(X1, X2, X3) prod(X1, c_mark(X2)) -> prod(X1, X2) fact(c_mark(X)) -> fact(X) active(c_zero(c_s(X))) -> mark(false) The (relative) TRS S consists of the following rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(x_1)) -> active(encArg(x_1)) encArg(cons_mark(x_1)) -> mark(encArg(x_1)) encArg(cons_fact(x_1)) -> fact(encArg(x_1)) encArg(cons_if(x_1, x_2, x_3)) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encArg(cons_zero(x_1)) -> zero(encArg(x_1)) encArg(cons_s(x_1)) -> s(encArg(x_1)) encArg(cons_prod(x_1, x_2)) -> prod(encArg(x_1), encArg(x_2)) encArg(cons_p(x_1)) -> p(encArg(x_1)) encArg(cons_add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) encode_active(x_1) -> active(encArg(x_1)) encode_fact(x_1) -> fact(encArg(x_1)) encode_mark(x_1) -> mark(encArg(x_1)) encode_if(x_1, x_2, x_3) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encode_zero(x_1) -> zero(encArg(x_1)) encode_s(x_1) -> s(encArg(x_1)) encode_0 -> 0 encode_prod(x_1, x_2) -> prod(encArg(x_1), encArg(x_2)) encode_p(x_1) -> p(encArg(x_1)) encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) encode_true -> true encode_false -> false s(x0) -> c_s(x0) active(x0) -> c_active(x0) p(x0) -> c_p(x0) zero(x0) -> c_zero(x0) fact(x0) -> c_fact(x0) add(x0, x1) -> c_add(x0, x1) if(x0, x1, x2) -> c_if(x0, x1, x2) prod(x0, x1) -> c_prod(x0, x1) mark(x0) -> c_mark(x0) Rewrite Strategy: INNERMOST ---------------------------------------- (19) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (20) 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: mark(0) -> active(0) [1] mark(true) -> active(true) [1] mark(false) -> active(false) [1] mark(c_prod(X1, X2)) -> active(prod(mark(X1), mark(X2))) [1] add(c_active(X1), X2) -> add(X1, X2) [1] p(c_mark(X)) -> p(X) [1] if(c_mark(X1), X2, X3) -> if(X1, X2, X3) [1] if(X1, c_active(X2), X3) -> if(X1, X2, X3) [1] add(X1, c_mark(X2)) -> add(X1, X2) [1] mark(c_s(X)) -> active(s(mark(X))) [1] mark(c_add(X1, X2)) -> active(add(mark(X1), mark(X2))) [1] active(c_p(c_s(X))) -> mark(X) [1] active(c_if(true, X, Y)) -> mark(X) [1] if(X1, X2, c_mark(X3)) -> if(X1, X2, X3) [1] s(c_active(X)) -> s(X) [1] if(X1, X2, c_active(X3)) -> if(X1, X2, X3) [1] active(c_prod(0, X)) -> mark(0) [1] if(X1, c_mark(X2), X3) -> if(X1, X2, X3) [1] prod(c_active(X1), X2) -> prod(X1, X2) [1] add(c_mark(X1), X2) -> add(X1, X2) [1] fact(c_active(X)) -> fact(X) [1] p(c_active(X)) -> p(X) [1] add(X1, c_active(X2)) -> add(X1, X2) [1] s(c_mark(X)) -> s(X) [1] mark(c_fact(X)) -> active(fact(mark(X))) [1] active(c_add(c_s(X), Y)) -> mark(s(add(X, Y))) [1] prod(X1, c_active(X2)) -> prod(X1, X2) [1] active(c_fact(X)) -> mark(if(zero(X), s(0), prod(X, fact(p(X))))) [1] prod(c_mark(X1), X2) -> prod(X1, X2) [1] mark(c_if(X1, X2, X3)) -> active(if(mark(X1), X2, X3)) [1] zero(c_mark(X)) -> zero(X) [1] active(c_add(0, X)) -> mark(X) [1] active(c_prod(c_s(X), Y)) -> mark(add(Y, prod(X, Y))) [1] mark(c_zero(X)) -> active(zero(mark(X))) [1] mark(c_p(X)) -> active(p(mark(X))) [1] active(c_if(false, X, Y)) -> mark(Y) [1] zero(c_active(X)) -> zero(X) [1] active(c_zero(0)) -> mark(true) [1] if(c_active(X1), X2, X3) -> if(X1, X2, X3) [1] prod(X1, c_mark(X2)) -> prod(X1, X2) [1] fact(c_mark(X)) -> fact(X) [1] active(c_zero(c_s(X))) -> mark(false) [1] encArg(0) -> 0 [0] encArg(true) -> true [0] encArg(false) -> false [0] encArg(cons_active(x_1)) -> active(encArg(x_1)) [0] encArg(cons_mark(x_1)) -> mark(encArg(x_1)) [0] encArg(cons_fact(x_1)) -> fact(encArg(x_1)) [0] encArg(cons_if(x_1, x_2, x_3)) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) [0] encArg(cons_zero(x_1)) -> zero(encArg(x_1)) [0] encArg(cons_s(x_1)) -> s(encArg(x_1)) [0] encArg(cons_prod(x_1, x_2)) -> prod(encArg(x_1), encArg(x_2)) [0] encArg(cons_p(x_1)) -> p(encArg(x_1)) [0] encArg(cons_add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) [0] encode_active(x_1) -> active(encArg(x_1)) [0] encode_fact(x_1) -> fact(encArg(x_1)) [0] encode_mark(x_1) -> mark(encArg(x_1)) [0] encode_if(x_1, x_2, x_3) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) [0] encode_zero(x_1) -> zero(encArg(x_1)) [0] encode_s(x_1) -> s(encArg(x_1)) [0] encode_0 -> 0 [0] encode_prod(x_1, x_2) -> prod(encArg(x_1), encArg(x_2)) [0] encode_p(x_1) -> p(encArg(x_1)) [0] encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) [0] encode_true -> true [0] encode_false -> false [0] s(x0) -> c_s(x0) [0] active(x0) -> c_active(x0) [0] p(x0) -> c_p(x0) [0] zero(x0) -> c_zero(x0) [0] fact(x0) -> c_fact(x0) [0] add(x0, x1) -> c_add(x0, x1) [0] if(x0, x1, x2) -> c_if(x0, x1, x2) [0] prod(x0, x1) -> c_prod(x0, x1) [0] mark(x0) -> c_mark(x0) [0] Rewrite Strategy: INNERMOST ---------------------------------------- (21) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (22) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: mark(0) -> active(0) [1] mark(true) -> active(true) [1] mark(false) -> active(false) [1] mark(c_prod(X1, X2)) -> active(prod(mark(X1), mark(X2))) [1] add(c_active(X1), X2) -> add(X1, X2) [1] p(c_mark(X)) -> p(X) [1] if(c_mark(X1), X2, X3) -> if(X1, X2, X3) [1] if(X1, c_active(X2), X3) -> if(X1, X2, X3) [1] add(X1, c_mark(X2)) -> add(X1, X2) [1] mark(c_s(X)) -> active(s(mark(X))) [1] mark(c_add(X1, X2)) -> active(add(mark(X1), mark(X2))) [1] active(c_p(c_s(X))) -> mark(X) [1] active(c_if(true, X, Y)) -> mark(X) [1] if(X1, X2, c_mark(X3)) -> if(X1, X2, X3) [1] s(c_active(X)) -> s(X) [1] if(X1, X2, c_active(X3)) -> if(X1, X2, X3) [1] active(c_prod(0, X)) -> mark(0) [1] if(X1, c_mark(X2), X3) -> if(X1, X2, X3) [1] prod(c_active(X1), X2) -> prod(X1, X2) [1] add(c_mark(X1), X2) -> add(X1, X2) [1] fact(c_active(X)) -> fact(X) [1] p(c_active(X)) -> p(X) [1] add(X1, c_active(X2)) -> add(X1, X2) [1] s(c_mark(X)) -> s(X) [1] mark(c_fact(X)) -> active(fact(mark(X))) [1] active(c_add(c_s(X), Y)) -> mark(s(add(X, Y))) [1] prod(X1, c_active(X2)) -> prod(X1, X2) [1] active(c_fact(X)) -> mark(if(zero(X), s(0), prod(X, fact(p(X))))) [1] prod(c_mark(X1), X2) -> prod(X1, X2) [1] mark(c_if(X1, X2, X3)) -> active(if(mark(X1), X2, X3)) [1] zero(c_mark(X)) -> zero(X) [1] active(c_add(0, X)) -> mark(X) [1] active(c_prod(c_s(X), Y)) -> mark(add(Y, prod(X, Y))) [1] mark(c_zero(X)) -> active(zero(mark(X))) [1] mark(c_p(X)) -> active(p(mark(X))) [1] active(c_if(false, X, Y)) -> mark(Y) [1] zero(c_active(X)) -> zero(X) [1] active(c_zero(0)) -> mark(true) [1] if(c_active(X1), X2, X3) -> if(X1, X2, X3) [1] prod(X1, c_mark(X2)) -> prod(X1, X2) [1] fact(c_mark(X)) -> fact(X) [1] active(c_zero(c_s(X))) -> mark(false) [1] encArg(0) -> 0 [0] encArg(true) -> true [0] encArg(false) -> false [0] encArg(cons_active(x_1)) -> active(encArg(x_1)) [0] encArg(cons_mark(x_1)) -> mark(encArg(x_1)) [0] encArg(cons_fact(x_1)) -> fact(encArg(x_1)) [0] encArg(cons_if(x_1, x_2, x_3)) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) [0] encArg(cons_zero(x_1)) -> zero(encArg(x_1)) [0] encArg(cons_s(x_1)) -> s(encArg(x_1)) [0] encArg(cons_prod(x_1, x_2)) -> prod(encArg(x_1), encArg(x_2)) [0] encArg(cons_p(x_1)) -> p(encArg(x_1)) [0] encArg(cons_add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) [0] encode_active(x_1) -> active(encArg(x_1)) [0] encode_fact(x_1) -> fact(encArg(x_1)) [0] encode_mark(x_1) -> mark(encArg(x_1)) [0] encode_if(x_1, x_2, x_3) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) [0] encode_zero(x_1) -> zero(encArg(x_1)) [0] encode_s(x_1) -> s(encArg(x_1)) [0] encode_0 -> 0 [0] encode_prod(x_1, x_2) -> prod(encArg(x_1), encArg(x_2)) [0] encode_p(x_1) -> p(encArg(x_1)) [0] encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) [0] encode_true -> true [0] encode_false -> false [0] s(x0) -> c_s(x0) [0] active(x0) -> c_active(x0) [0] p(x0) -> c_p(x0) [0] zero(x0) -> c_zero(x0) [0] fact(x0) -> c_fact(x0) [0] add(x0, x1) -> c_add(x0, x1) [0] if(x0, x1, x2) -> c_if(x0, x1, x2) [0] prod(x0, x1) -> c_prod(x0, x1) [0] mark(x0) -> c_mark(x0) [0] The TRS has the following type information: mark :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add 0 :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add active :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add true :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add false :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add c_prod :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add prod :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add add :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add c_active :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add p :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add c_mark :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add if :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add c_s :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add s :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add c_add :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add c_p :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add c_if :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add fact :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add c_fact :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add zero :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add c_zero :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encArg :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_active :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_mark :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_fact :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_if :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_zero :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_s :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_prod :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_p :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add cons_add :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_active :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_fact :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_mark :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_if :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_zero :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_s :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_0 :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_prod :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_p :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_add :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_true :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add encode_false :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add 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: encArg(v0) -> null_encArg [0] encode_active(v0) -> null_encode_active [0] encode_fact(v0) -> null_encode_fact [0] encode_mark(v0) -> null_encode_mark [0] encode_if(v0, v1, v2) -> null_encode_if [0] encode_zero(v0) -> null_encode_zero [0] encode_s(v0) -> null_encode_s [0] encode_0 -> null_encode_0 [0] encode_prod(v0, v1) -> null_encode_prod [0] encode_p(v0) -> null_encode_p [0] encode_add(v0, v1) -> null_encode_add [0] encode_true -> null_encode_true [0] encode_false -> null_encode_false [0] s(v0) -> null_s [0] active(v0) -> null_active [0] p(v0) -> null_p [0] zero(v0) -> null_zero [0] fact(v0) -> null_fact [0] add(v0, v1) -> null_add [0] if(v0, v1, v2) -> null_if [0] prod(v0, v1) -> null_prod [0] mark(v0) -> null_mark [0] And the following fresh constants: null_encArg, null_encode_active, null_encode_fact, null_encode_mark, null_encode_if, null_encode_zero, null_encode_s, null_encode_0, null_encode_prod, null_encode_p, null_encode_add, null_encode_true, null_encode_false, null_s, null_active, null_p, null_zero, null_fact, null_add, null_if, null_prod, null_mark ---------------------------------------- (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: mark(0) -> active(0) [1] mark(true) -> active(true) [1] mark(false) -> active(false) [1] mark(c_prod(X1, X2)) -> active(prod(mark(X1), mark(X2))) [1] add(c_active(X1), X2) -> add(X1, X2) [1] p(c_mark(X)) -> p(X) [1] if(c_mark(X1), X2, X3) -> if(X1, X2, X3) [1] if(X1, c_active(X2), X3) -> if(X1, X2, X3) [1] add(X1, c_mark(X2)) -> add(X1, X2) [1] mark(c_s(X)) -> active(s(mark(X))) [1] mark(c_add(X1, X2)) -> active(add(mark(X1), mark(X2))) [1] active(c_p(c_s(X))) -> mark(X) [1] active(c_if(true, X, Y)) -> mark(X) [1] if(X1, X2, c_mark(X3)) -> if(X1, X2, X3) [1] s(c_active(X)) -> s(X) [1] if(X1, X2, c_active(X3)) -> if(X1, X2, X3) [1] active(c_prod(0, X)) -> mark(0) [1] if(X1, c_mark(X2), X3) -> if(X1, X2, X3) [1] prod(c_active(X1), X2) -> prod(X1, X2) [1] add(c_mark(X1), X2) -> add(X1, X2) [1] fact(c_active(X)) -> fact(X) [1] p(c_active(X)) -> p(X) [1] add(X1, c_active(X2)) -> add(X1, X2) [1] s(c_mark(X)) -> s(X) [1] mark(c_fact(X)) -> active(fact(mark(X))) [1] active(c_add(c_s(X), Y)) -> mark(s(add(X, Y))) [1] prod(X1, c_active(X2)) -> prod(X1, X2) [1] active(c_fact(X)) -> mark(if(zero(X), s(0), prod(X, fact(p(X))))) [1] prod(c_mark(X1), X2) -> prod(X1, X2) [1] mark(c_if(X1, X2, X3)) -> active(if(mark(X1), X2, X3)) [1] zero(c_mark(X)) -> zero(X) [1] active(c_add(0, X)) -> mark(X) [1] active(c_prod(c_s(X), Y)) -> mark(add(Y, prod(X, Y))) [1] mark(c_zero(X)) -> active(zero(mark(X))) [1] mark(c_p(X)) -> active(p(mark(X))) [1] active(c_if(false, X, Y)) -> mark(Y) [1] zero(c_active(X)) -> zero(X) [1] active(c_zero(0)) -> mark(true) [1] if(c_active(X1), X2, X3) -> if(X1, X2, X3) [1] prod(X1, c_mark(X2)) -> prod(X1, X2) [1] fact(c_mark(X)) -> fact(X) [1] active(c_zero(c_s(X))) -> mark(false) [1] encArg(0) -> 0 [0] encArg(true) -> true [0] encArg(false) -> false [0] encArg(cons_active(x_1)) -> active(encArg(x_1)) [0] encArg(cons_mark(x_1)) -> mark(encArg(x_1)) [0] encArg(cons_fact(x_1)) -> fact(encArg(x_1)) [0] encArg(cons_if(x_1, x_2, x_3)) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) [0] encArg(cons_zero(x_1)) -> zero(encArg(x_1)) [0] encArg(cons_s(x_1)) -> s(encArg(x_1)) [0] encArg(cons_prod(x_1, x_2)) -> prod(encArg(x_1), encArg(x_2)) [0] encArg(cons_p(x_1)) -> p(encArg(x_1)) [0] encArg(cons_add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) [0] encode_active(x_1) -> active(encArg(x_1)) [0] encode_fact(x_1) -> fact(encArg(x_1)) [0] encode_mark(x_1) -> mark(encArg(x_1)) [0] encode_if(x_1, x_2, x_3) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) [0] encode_zero(x_1) -> zero(encArg(x_1)) [0] encode_s(x_1) -> s(encArg(x_1)) [0] encode_0 -> 0 [0] encode_prod(x_1, x_2) -> prod(encArg(x_1), encArg(x_2)) [0] encode_p(x_1) -> p(encArg(x_1)) [0] encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) [0] encode_true -> true [0] encode_false -> false [0] s(x0) -> c_s(x0) [0] active(x0) -> c_active(x0) [0] p(x0) -> c_p(x0) [0] zero(x0) -> c_zero(x0) [0] fact(x0) -> c_fact(x0) [0] add(x0, x1) -> c_add(x0, x1) [0] if(x0, x1, x2) -> c_if(x0, x1, x2) [0] prod(x0, x1) -> c_prod(x0, x1) [0] mark(x0) -> c_mark(x0) [0] encArg(v0) -> null_encArg [0] encode_active(v0) -> null_encode_active [0] encode_fact(v0) -> null_encode_fact [0] encode_mark(v0) -> null_encode_mark [0] encode_if(v0, v1, v2) -> null_encode_if [0] encode_zero(v0) -> null_encode_zero [0] encode_s(v0) -> null_encode_s [0] encode_0 -> null_encode_0 [0] encode_prod(v0, v1) -> null_encode_prod [0] encode_p(v0) -> null_encode_p [0] encode_add(v0, v1) -> null_encode_add [0] encode_true -> null_encode_true [0] encode_false -> null_encode_false [0] s(v0) -> null_s [0] active(v0) -> null_active [0] p(v0) -> null_p [0] zero(v0) -> null_zero [0] fact(v0) -> null_fact [0] add(v0, v1) -> null_add [0] if(v0, v1, v2) -> null_if [0] prod(v0, v1) -> null_prod [0] mark(v0) -> null_mark [0] The TRS has the following type information: mark :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark 0 :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark active :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark true :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark false :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_prod :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark prod :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark add :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_active :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark p :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_mark :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark if :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_s :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark s :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_add :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_p :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_if :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark fact :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_fact :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark zero :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_zero :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encArg :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_active :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_mark :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_fact :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_if :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_zero :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_s :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_prod :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_p :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_add :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_active :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_fact :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_mark :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_if :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_zero :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_s :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_0 :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_prod :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_p :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_add :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_true :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_false :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encArg :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_active :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_fact :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_mark :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_if :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_zero :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_s :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_0 :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_prod :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_p :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_add :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_true :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_false :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_s :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_active :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_p :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_zero :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_fact :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_add :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_if :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_prod :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_mark :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark 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: 0 => 0 true => 2 false => 1 null_encArg => 0 null_encode_active => 0 null_encode_fact => 0 null_encode_mark => 0 null_encode_if => 0 null_encode_zero => 0 null_encode_s => 0 null_encode_0 => 0 null_encode_prod => 0 null_encode_p => 0 null_encode_add => 0 null_encode_true => 0 null_encode_false => 0 null_s => 0 null_active => 0 null_p => 0 null_zero => 0 null_fact => 0 null_add => 0 null_if => 0 null_prod => 0 null_mark => 0 ---------------------------------------- (26) Obligation: Complexity RNTS consisting of the following rules: active(z) -{ 1 }-> mark(X) :|: z = 1 + (1 + X), X >= 0 active(z) -{ 1 }-> mark(X) :|: Y >= 0, X >= 0, z = 1 + 2 + X + Y active(z) -{ 1 }-> mark(X) :|: z = 1 + 0 + X, X >= 0 active(z) -{ 1 }-> mark(Y) :|: Y >= 0, z = 1 + 1 + X + Y, X >= 0 active(z) -{ 1 }-> mark(s(add(X, Y))) :|: z = 1 + (1 + X) + Y, Y >= 0, X >= 0 active(z) -{ 1 }-> mark(if(zero(X), s(0), prod(X, fact(p(X))))) :|: z = 1 + X, X >= 0 active(z) -{ 1 }-> mark(add(Y, prod(X, Y))) :|: z = 1 + (1 + X) + Y, Y >= 0, X >= 0 active(z) -{ 1 }-> mark(2) :|: z = 1 + 0 active(z) -{ 1 }-> mark(1) :|: z = 1 + (1 + X), X >= 0 active(z) -{ 1 }-> mark(0) :|: z = 1 + 0 + X, X >= 0 active(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 active(z) -{ 0 }-> 1 + x0 :|: z = x0, x0 >= 0 add(z, z') -{ 1 }-> add(X1, X2) :|: X1 >= 0, z = 1 + X1, X2 >= 0, z' = X2 add(z, z') -{ 1 }-> add(X1, X2) :|: X1 >= 0, z' = 1 + X2, X2 >= 0, z = X1 add(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 add(z, z') -{ 0 }-> 1 + x0 + x1 :|: z = x0, x0 >= 0, x1 >= 0, z' = x1 encArg(z) -{ 0 }-> zero(encArg(x_1)) :|: z = 1 + x_1, x_1 >= 0 encArg(z) -{ 0 }-> s(encArg(x_1)) :|: z = 1 + x_1, x_1 >= 0 encArg(z) -{ 0 }-> prod(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> p(encArg(x_1)) :|: z = 1 + x_1, x_1 >= 0 encArg(z) -{ 0 }-> mark(encArg(x_1)) :|: z = 1 + x_1, x_1 >= 0 encArg(z) -{ 0 }-> if(encArg(x_1), encArg(x_2), encArg(x_3)) :|: x_1 >= 0, z = 1 + x_1 + x_2 + x_3, x_3 >= 0, x_2 >= 0 encArg(z) -{ 0 }-> fact(encArg(x_1)) :|: z = 1 + x_1, x_1 >= 0 encArg(z) -{ 0 }-> add(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> active(encArg(x_1)) :|: z = 1 + x_1, x_1 >= 0 encArg(z) -{ 0 }-> 2 :|: z = 2 encArg(z) -{ 0 }-> 1 :|: z = 1 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 encode_0 -{ 0 }-> 0 :|: encode_active(z) -{ 0 }-> active(encArg(x_1)) :|: x_1 >= 0, z = x_1 encode_active(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 encode_add(z, z') -{ 0 }-> add(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, x_2 >= 0, z = x_1, z' = x_2 encode_add(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 encode_fact(z) -{ 0 }-> fact(encArg(x_1)) :|: x_1 >= 0, z = x_1 encode_fact(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 encode_false -{ 0 }-> 1 :|: encode_false -{ 0 }-> 0 :|: encode_if(z, z', z'') -{ 0 }-> if(encArg(x_1), encArg(x_2), encArg(x_3)) :|: x_1 >= 0, x_3 >= 0, x_2 >= 0, z = x_1, z' = x_2, z'' = x_3 encode_if(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 encode_mark(z) -{ 0 }-> mark(encArg(x_1)) :|: x_1 >= 0, z = x_1 encode_mark(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 encode_p(z) -{ 0 }-> p(encArg(x_1)) :|: x_1 >= 0, z = x_1 encode_p(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 encode_prod(z, z') -{ 0 }-> prod(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, x_2 >= 0, z = x_1, z' = x_2 encode_prod(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 encode_s(z) -{ 0 }-> s(encArg(x_1)) :|: x_1 >= 0, z = x_1 encode_s(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 encode_true -{ 0 }-> 2 :|: encode_true -{ 0 }-> 0 :|: encode_zero(z) -{ 0 }-> zero(encArg(x_1)) :|: x_1 >= 0, z = x_1 encode_zero(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 fact(z) -{ 1 }-> fact(X) :|: z = 1 + X, X >= 0 fact(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 fact(z) -{ 0 }-> 1 + x0 :|: z = x0, x0 >= 0 if(z, z', z'') -{ 1 }-> if(X1, X2, X3) :|: X1 >= 0, z = 1 + X1, X3 >= 0, X2 >= 0, z' = X2, z'' = X3 if(z, z', z'') -{ 1 }-> if(X1, X2, X3) :|: X1 >= 0, X3 >= 0, z' = 1 + X2, X2 >= 0, z = X1, z'' = X3 if(z, z', z'') -{ 1 }-> if(X1, X2, X3) :|: X1 >= 0, X3 >= 0, X2 >= 0, z = X1, z' = X2, z'' = 1 + X3 if(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 if(z, z', z'') -{ 0 }-> 1 + x0 + x1 + x2 :|: z = x0, x0 >= 0, x1 >= 0, z' = x1, z'' = x2, x2 >= 0 mark(z) -{ 1 }-> active(zero(mark(X))) :|: z = 1 + X, X >= 0 mark(z) -{ 1 }-> active(s(mark(X))) :|: z = 1 + X, X >= 0 mark(z) -{ 1 }-> active(prod(mark(X1), mark(X2))) :|: X1 >= 0, X2 >= 0, z = 1 + X1 + X2 mark(z) -{ 1 }-> active(p(mark(X))) :|: z = 1 + X, X >= 0 mark(z) -{ 1 }-> active(if(mark(X1), X2, X3)) :|: X1 >= 0, X3 >= 0, z = 1 + X1 + X2 + X3, X2 >= 0 mark(z) -{ 1 }-> active(fact(mark(X))) :|: z = 1 + X, X >= 0 mark(z) -{ 1 }-> active(add(mark(X1), mark(X2))) :|: X1 >= 0, X2 >= 0, z = 1 + X1 + X2 mark(z) -{ 1 }-> active(2) :|: z = 2 mark(z) -{ 1 }-> active(1) :|: z = 1 mark(z) -{ 1 }-> active(0) :|: z = 0 mark(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 mark(z) -{ 0 }-> 1 + x0 :|: z = x0, x0 >= 0 p(z) -{ 1 }-> p(X) :|: z = 1 + X, X >= 0 p(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 p(z) -{ 0 }-> 1 + x0 :|: z = x0, x0 >= 0 prod(z, z') -{ 1 }-> prod(X1, X2) :|: X1 >= 0, z = 1 + X1, X2 >= 0, z' = X2 prod(z, z') -{ 1 }-> prod(X1, X2) :|: X1 >= 0, z' = 1 + X2, X2 >= 0, z = X1 prod(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 prod(z, z') -{ 0 }-> 1 + x0 + x1 :|: z = x0, x0 >= 0, x1 >= 0, z' = x1 s(z) -{ 1 }-> s(X) :|: z = 1 + X, X >= 0 s(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 s(z) -{ 0 }-> 1 + x0 :|: z = x0, x0 >= 0 zero(z) -{ 1 }-> zero(X) :|: z = 1 + X, X >= 0 zero(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 zero(z) -{ 0 }-> 1 + x0 :|: z = x0, x0 >= 0 Only complete derivations are relevant for the runtime complexity. ---------------------------------------- (27) 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: none (c) The following functions are completely defined: encArg_1 encode_active_1 encode_fact_1 encode_mark_1 encode_if_3 encode_zero_1 encode_s_1 encode_0 encode_prod_2 encode_p_1 encode_add_2 encode_true encode_false s_1 active_1 p_1 zero_1 fact_1 add_2 if_3 prod_2 mark_1 Due to the following rules being added: encArg(v0) -> null_encArg [0] encode_active(v0) -> null_encode_active [0] encode_fact(v0) -> null_encode_fact [0] encode_mark(v0) -> null_encode_mark [0] encode_if(v0, v1, v2) -> null_encode_if [0] encode_zero(v0) -> null_encode_zero [0] encode_s(v0) -> null_encode_s [0] encode_0 -> null_encode_0 [0] encode_prod(v0, v1) -> null_encode_prod [0] encode_p(v0) -> null_encode_p [0] encode_add(v0, v1) -> null_encode_add [0] encode_true -> null_encode_true [0] encode_false -> null_encode_false [0] s(v0) -> null_s [0] active(v0) -> null_active [0] p(v0) -> null_p [0] zero(v0) -> null_zero [0] fact(v0) -> null_fact [0] add(v0, v1) -> null_add [0] if(v0, v1, v2) -> null_if [0] prod(v0, v1) -> null_prod [0] mark(v0) -> null_mark [0] And the following fresh constants: null_encArg, null_encode_active, null_encode_fact, null_encode_mark, null_encode_if, null_encode_zero, null_encode_s, null_encode_0, null_encode_prod, null_encode_p, null_encode_add, null_encode_true, null_encode_false, null_s, null_active, null_p, null_zero, null_fact, null_add, null_if, null_prod, null_mark ---------------------------------------- (28) 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: mark(0) -> active(0) [1] mark(true) -> active(true) [1] mark(false) -> active(false) [1] mark(c_prod(X1, X2)) -> active(prod(mark(X1), mark(X2))) [1] add(c_active(X1), X2) -> add(X1, X2) [1] p(c_mark(X)) -> p(X) [1] if(c_mark(X1), X2, X3) -> if(X1, X2, X3) [1] if(X1, c_active(X2), X3) -> if(X1, X2, X3) [1] add(X1, c_mark(X2)) -> add(X1, X2) [1] mark(c_s(X)) -> active(s(mark(X))) [1] mark(c_add(X1, X2)) -> active(add(mark(X1), mark(X2))) [1] active(c_p(c_s(X))) -> mark(X) [1] active(c_if(true, X, Y)) -> mark(X) [1] if(X1, X2, c_mark(X3)) -> if(X1, X2, X3) [1] s(c_active(X)) -> s(X) [1] if(X1, X2, c_active(X3)) -> if(X1, X2, X3) [1] active(c_prod(0, X)) -> mark(0) [1] if(X1, c_mark(X2), X3) -> if(X1, X2, X3) [1] prod(c_active(X1), X2) -> prod(X1, X2) [1] add(c_mark(X1), X2) -> add(X1, X2) [1] fact(c_active(X)) -> fact(X) [1] p(c_active(X)) -> p(X) [1] add(X1, c_active(X2)) -> add(X1, X2) [1] s(c_mark(X)) -> s(X) [1] mark(c_fact(X)) -> active(fact(mark(X))) [1] active(c_add(c_s(X), Y)) -> mark(s(add(X, Y))) [1] prod(X1, c_active(X2)) -> prod(X1, X2) [1] active(c_fact(X)) -> mark(if(zero(X), s(0), prod(X, fact(p(X))))) [1] prod(c_mark(X1), X2) -> prod(X1, X2) [1] mark(c_if(X1, X2, X3)) -> active(if(mark(X1), X2, X3)) [1] zero(c_mark(X)) -> zero(X) [1] active(c_add(0, X)) -> mark(X) [1] active(c_prod(c_s(X), Y)) -> mark(add(Y, prod(X, Y))) [1] mark(c_zero(X)) -> active(zero(mark(X))) [1] mark(c_p(X)) -> active(p(mark(X))) [1] active(c_if(false, X, Y)) -> mark(Y) [1] zero(c_active(X)) -> zero(X) [1] active(c_zero(0)) -> mark(true) [1] if(c_active(X1), X2, X3) -> if(X1, X2, X3) [1] prod(X1, c_mark(X2)) -> prod(X1, X2) [1] fact(c_mark(X)) -> fact(X) [1] active(c_zero(c_s(X))) -> mark(false) [1] encArg(0) -> 0 [0] encArg(true) -> true [0] encArg(false) -> false [0] encArg(cons_active(x_1)) -> active(encArg(x_1)) [0] encArg(cons_mark(x_1)) -> mark(encArg(x_1)) [0] encArg(cons_fact(x_1)) -> fact(encArg(x_1)) [0] encArg(cons_if(x_1, x_2, x_3)) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) [0] encArg(cons_zero(x_1)) -> zero(encArg(x_1)) [0] encArg(cons_s(x_1)) -> s(encArg(x_1)) [0] encArg(cons_prod(x_1, x_2)) -> prod(encArg(x_1), encArg(x_2)) [0] encArg(cons_p(x_1)) -> p(encArg(x_1)) [0] encArg(cons_add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) [0] encode_active(x_1) -> active(encArg(x_1)) [0] encode_fact(x_1) -> fact(encArg(x_1)) [0] encode_mark(x_1) -> mark(encArg(x_1)) [0] encode_if(x_1, x_2, x_3) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) [0] encode_zero(x_1) -> zero(encArg(x_1)) [0] encode_s(x_1) -> s(encArg(x_1)) [0] encode_0 -> 0 [0] encode_prod(x_1, x_2) -> prod(encArg(x_1), encArg(x_2)) [0] encode_p(x_1) -> p(encArg(x_1)) [0] encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) [0] encode_true -> true [0] encode_false -> false [0] s(x0) -> c_s(x0) [0] active(x0) -> c_active(x0) [0] p(x0) -> c_p(x0) [0] zero(x0) -> c_zero(x0) [0] fact(x0) -> c_fact(x0) [0] add(x0, x1) -> c_add(x0, x1) [0] if(x0, x1, x2) -> c_if(x0, x1, x2) [0] prod(x0, x1) -> c_prod(x0, x1) [0] mark(x0) -> c_mark(x0) [0] encArg(v0) -> null_encArg [0] encode_active(v0) -> null_encode_active [0] encode_fact(v0) -> null_encode_fact [0] encode_mark(v0) -> null_encode_mark [0] encode_if(v0, v1, v2) -> null_encode_if [0] encode_zero(v0) -> null_encode_zero [0] encode_s(v0) -> null_encode_s [0] encode_0 -> null_encode_0 [0] encode_prod(v0, v1) -> null_encode_prod [0] encode_p(v0) -> null_encode_p [0] encode_add(v0, v1) -> null_encode_add [0] encode_true -> null_encode_true [0] encode_false -> null_encode_false [0] s(v0) -> null_s [0] active(v0) -> null_active [0] p(v0) -> null_p [0] zero(v0) -> null_zero [0] fact(v0) -> null_fact [0] add(v0, v1) -> null_add [0] if(v0, v1, v2) -> null_if [0] prod(v0, v1) -> null_prod [0] mark(v0) -> null_mark [0] The TRS has the following type information: mark :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark 0 :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark active :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark true :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark false :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_prod :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark prod :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark add :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_active :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark p :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_mark :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark if :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_s :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark s :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_add :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_p :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_if :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark fact :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_fact :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark zero :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_zero :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encArg :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_active :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_mark :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_fact :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_if :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_zero :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_s :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_prod :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_p :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_add :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_active :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_fact :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_mark :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_if :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_zero :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_s :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_0 :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_prod :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_p :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_add :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_true :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_false :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encArg :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_active :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_fact :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_mark :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_if :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_zero :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_s :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_0 :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_prod :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_p :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_add :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_true :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_false :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_s :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_active :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_p :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_zero :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_fact :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_add :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_if :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_prod :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_mark :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark Rewrite Strategy: INNERMOST ---------------------------------------- (29) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (30) 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: mark(0) -> active(0) [1] mark(true) -> active(true) [1] mark(false) -> active(false) [1] mark(c_prod(X1, X2)) -> active(prod(mark(X1), mark(X2))) [1] add(c_active(X1), X2) -> add(X1, X2) [1] p(c_mark(X)) -> p(X) [1] if(c_mark(X1), X2, X3) -> if(X1, X2, X3) [1] if(X1, c_active(X2), X3) -> if(X1, X2, X3) [1] add(X1, c_mark(X2)) -> add(X1, X2) [1] mark(c_s(0)) -> active(s(active(0))) [2] mark(c_s(true)) -> active(s(active(true))) [2] mark(c_s(false)) -> active(s(active(false))) [2] mark(c_s(c_prod(X140, X239))) -> active(s(active(prod(mark(X140), mark(X239))))) [2] mark(c_s(c_s(X72))) -> active(s(active(s(mark(X72))))) [2] mark(c_s(c_add(X141, X240))) -> active(s(active(add(mark(X141), mark(X240))))) [2] mark(c_s(c_fact(X73))) -> active(s(active(fact(mark(X73))))) [2] mark(c_s(c_if(X142, X241, X318))) -> active(s(active(if(mark(X142), X241, X318)))) [2] mark(c_s(c_zero(X74))) -> active(s(active(zero(mark(X74))))) [2] mark(c_s(c_p(X75))) -> active(s(active(p(mark(X75))))) [2] mark(c_s(X)) -> active(s(c_mark(X))) [1] mark(c_s(X)) -> active(s(null_mark)) [1] mark(c_add(X1, X2)) -> active(add(mark(X1), mark(X2))) [1] active(c_p(c_s(X))) -> mark(X) [1] active(c_if(true, X, Y)) -> mark(X) [1] if(X1, X2, c_mark(X3)) -> if(X1, X2, X3) [1] s(c_active(X)) -> s(X) [1] if(X1, X2, c_active(X3)) -> if(X1, X2, X3) [1] active(c_prod(0, X)) -> mark(0) [1] if(X1, c_mark(X2), X3) -> if(X1, X2, X3) [1] prod(c_active(X1), X2) -> prod(X1, X2) [1] add(c_mark(X1), X2) -> add(X1, X2) [1] fact(c_active(X)) -> fact(X) [1] p(c_active(X)) -> p(X) [1] add(X1, c_active(X2)) -> add(X1, X2) [1] s(c_mark(X)) -> s(X) [1] mark(c_fact(0)) -> active(fact(active(0))) [2] mark(c_fact(true)) -> active(fact(active(true))) [2] mark(c_fact(false)) -> active(fact(active(false))) [2] mark(c_fact(c_prod(X1100, X281))) -> active(fact(active(prod(mark(X1100), mark(X281))))) [2] mark(c_fact(c_s(X200))) -> active(fact(active(s(mark(X200))))) [2] mark(c_fact(c_add(X1101, X282))) -> active(fact(active(add(mark(X1101), mark(X282))))) [2] mark(c_fact(c_fact(X201))) -> active(fact(active(fact(mark(X201))))) [2] mark(c_fact(c_if(X1102, X283, X332))) -> active(fact(active(if(mark(X1102), X283, X332)))) [2] mark(c_fact(c_zero(X202))) -> active(fact(active(zero(mark(X202))))) [2] mark(c_fact(c_p(X203))) -> active(fact(active(p(mark(X203))))) [2] mark(c_fact(X)) -> active(fact(c_mark(X))) [1] mark(c_fact(X)) -> active(fact(null_mark)) [1] active(c_add(c_s(c_active(X1103)), Y)) -> mark(s(add(X1103, Y))) [2] active(c_add(c_s(X), c_mark(X284))) -> mark(s(add(X, X284))) [2] active(c_add(c_s(c_mark(X1104)), Y)) -> mark(s(add(X1104, Y))) [2] active(c_add(c_s(X), c_active(X285))) -> mark(s(add(X, X285))) [2] active(c_add(c_s(X), Y)) -> mark(s(c_add(X, Y))) [1] active(c_add(c_s(X), Y)) -> mark(s(null_add)) [1] prod(X1, c_active(X2)) -> prod(X1, X2) [1] active(c_fact(X)) -> mark(if(zero(X), s(0), prod(X, fact(p(X))))) [1] prod(c_mark(X1), X2) -> prod(X1, X2) [1] mark(c_if(0, X2, X3)) -> active(if(active(0), X2, X3)) [2] mark(c_if(true, X2, X3)) -> active(if(active(true), X2, X3)) [2] mark(c_if(false, X2, X3)) -> active(if(active(false), X2, X3)) [2] mark(c_if(c_prod(X1105, X290), X2, X3)) -> active(if(active(prod(mark(X1105), mark(X290))), X2, X3)) [2] mark(c_if(c_s(X291), X2, X3)) -> active(if(active(s(mark(X291))), X2, X3)) [2] mark(c_if(c_add(X1106, X292), X2, X3)) -> active(if(active(add(mark(X1106), mark(X292))), X2, X3)) [2] mark(c_if(c_fact(X293), X2, X3)) -> active(if(active(fact(mark(X293))), X2, X3)) [2] mark(c_if(c_if(X1107, X294, X333), X2, X3)) -> active(if(active(if(mark(X1107), X294, X333)), X2, X3)) [2] mark(c_if(c_zero(X295), X2, X3)) -> active(if(active(zero(mark(X295))), X2, X3)) [2] mark(c_if(c_p(X296), X2, X3)) -> active(if(active(p(mark(X296))), X2, X3)) [2] mark(c_if(X1, X2, X3)) -> active(if(c_mark(X1), X2, X3)) [1] mark(c_if(X1, X2, X3)) -> active(if(null_mark, X2, X3)) [1] zero(c_mark(X)) -> zero(X) [1] active(c_add(0, X)) -> mark(X) [1] active(c_prod(c_s(c_active(X1108)), Y)) -> mark(add(Y, prod(X1108, Y))) [2] active(c_prod(c_s(X), c_active(X297))) -> mark(add(c_active(X297), prod(X, X297))) [2] active(c_prod(c_s(c_mark(X1109)), Y)) -> mark(add(Y, prod(X1109, Y))) [2] active(c_prod(c_s(X), c_mark(X298))) -> mark(add(c_mark(X298), prod(X, X298))) [2] active(c_prod(c_s(X), Y)) -> mark(add(Y, c_prod(X, Y))) [1] active(c_prod(c_s(X), Y)) -> mark(add(Y, null_prod)) [1] mark(c_zero(0)) -> active(zero(active(0))) [2] mark(c_zero(true)) -> active(zero(active(true))) [2] mark(c_zero(false)) -> active(zero(active(false))) [2] mark(c_zero(c_prod(X1110, X299))) -> active(zero(active(prod(mark(X1110), mark(X299))))) [2] mark(c_zero(c_s(X300))) -> active(zero(active(s(mark(X300))))) [2] mark(c_zero(c_add(X1111, X2100))) -> active(zero(active(add(mark(X1111), mark(X2100))))) [2] mark(c_zero(c_fact(X301))) -> active(zero(active(fact(mark(X301))))) [2] mark(c_zero(c_if(X1112, X2101, X334))) -> active(zero(active(if(mark(X1112), X2101, X334)))) [2] mark(c_zero(c_zero(X302))) -> active(zero(active(zero(mark(X302))))) [2] mark(c_zero(c_p(X303))) -> active(zero(active(p(mark(X303))))) [2] mark(c_zero(X)) -> active(zero(c_mark(X))) [1] mark(c_zero(X)) -> active(zero(null_mark)) [1] mark(c_p(0)) -> active(p(active(0))) [2] mark(c_p(true)) -> active(p(active(true))) [2] mark(c_p(false)) -> active(p(active(false))) [2] mark(c_p(c_prod(X1113, X2102))) -> active(p(active(prod(mark(X1113), mark(X2102))))) [2] mark(c_p(c_s(X304))) -> active(p(active(s(mark(X304))))) [2] mark(c_p(c_add(X1114, X2103))) -> active(p(active(add(mark(X1114), mark(X2103))))) [2] mark(c_p(c_fact(X305))) -> active(p(active(fact(mark(X305))))) [2] mark(c_p(c_if(X1115, X2104, X335))) -> active(p(active(if(mark(X1115), X2104, X335)))) [2] mark(c_p(c_zero(X306))) -> active(p(active(zero(mark(X306))))) [2] mark(c_p(c_p(X307))) -> active(p(active(p(mark(X307))))) [2] mark(c_p(X)) -> active(p(c_mark(X))) [1] mark(c_p(X)) -> active(p(null_mark)) [1] active(c_if(false, X, Y)) -> mark(Y) [1] zero(c_active(X)) -> zero(X) [1] active(c_zero(0)) -> mark(true) [1] if(c_active(X1), X2, X3) -> if(X1, X2, X3) [1] prod(X1, c_mark(X2)) -> prod(X1, X2) [1] fact(c_mark(X)) -> fact(X) [1] active(c_zero(c_s(X))) -> mark(false) [1] encArg(0) -> 0 [0] encArg(true) -> true [0] encArg(false) -> false [0] encArg(cons_active(0)) -> active(0) [0] encArg(cons_active(true)) -> active(true) [0] encArg(cons_active(false)) -> active(false) [0] encArg(cons_active(cons_active(x_1'))) -> active(active(encArg(x_1'))) [0] encArg(cons_active(cons_mark(x_1''))) -> active(mark(encArg(x_1''))) [0] encArg(cons_active(cons_fact(x_11))) -> active(fact(encArg(x_11))) [0] encArg(cons_active(cons_if(x_12, x_2', x_3'))) -> active(if(encArg(x_12), encArg(x_2'), encArg(x_3'))) [0] encArg(cons_active(cons_zero(x_13))) -> active(zero(encArg(x_13))) [0] encArg(cons_active(cons_s(x_14))) -> active(s(encArg(x_14))) [0] encArg(cons_active(cons_prod(x_15, x_2''))) -> active(prod(encArg(x_15), encArg(x_2''))) [0] encArg(cons_active(cons_p(x_16))) -> active(p(encArg(x_16))) [0] encArg(cons_active(cons_add(x_17, x_21))) -> active(add(encArg(x_17), encArg(x_21))) [0] encArg(cons_active(x_1)) -> active(null_encArg) [0] encArg(cons_mark(0)) -> mark(0) [0] encArg(cons_mark(true)) -> mark(true) [0] encArg(cons_mark(false)) -> mark(false) [0] encArg(cons_mark(cons_active(x_18))) -> mark(active(encArg(x_18))) [0] encArg(cons_mark(cons_mark(x_19))) -> mark(mark(encArg(x_19))) [0] encArg(cons_mark(cons_fact(x_110))) -> mark(fact(encArg(x_110))) [0] encArg(cons_mark(cons_if(x_111, x_22, x_3''))) -> mark(if(encArg(x_111), encArg(x_22), encArg(x_3''))) [0] encArg(cons_mark(cons_zero(x_112))) -> mark(zero(encArg(x_112))) [0] encArg(cons_mark(cons_s(x_113))) -> mark(s(encArg(x_113))) [0] encArg(cons_mark(cons_prod(x_114, x_23))) -> mark(prod(encArg(x_114), encArg(x_23))) [0] encArg(cons_mark(cons_p(x_115))) -> mark(p(encArg(x_115))) [0] encArg(cons_mark(cons_add(x_116, x_24))) -> mark(add(encArg(x_116), encArg(x_24))) [0] encArg(cons_mark(x_1)) -> mark(null_encArg) [0] encArg(cons_fact(0)) -> fact(0) [0] encArg(cons_fact(true)) -> fact(true) [0] encArg(cons_fact(false)) -> fact(false) [0] encArg(cons_fact(cons_active(x_117))) -> fact(active(encArg(x_117))) [0] encArg(cons_fact(cons_mark(x_118))) -> fact(mark(encArg(x_118))) [0] encArg(cons_fact(cons_fact(x_119))) -> fact(fact(encArg(x_119))) [0] encArg(cons_fact(cons_if(x_120, x_25, x_31))) -> fact(if(encArg(x_120), encArg(x_25), encArg(x_31))) [0] encArg(cons_fact(cons_zero(x_121))) -> fact(zero(encArg(x_121))) [0] encArg(cons_fact(cons_s(x_122))) -> fact(s(encArg(x_122))) [0] encArg(cons_fact(cons_prod(x_123, x_26))) -> fact(prod(encArg(x_123), encArg(x_26))) [0] encArg(cons_fact(cons_p(x_124))) -> fact(p(encArg(x_124))) [0] encArg(cons_fact(cons_add(x_125, x_27))) -> fact(add(encArg(x_125), encArg(x_27))) [0] encArg(cons_fact(x_1)) -> fact(null_encArg) [0] encArg(cons_if(x_1, x_2, x_3)) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) [0] encArg(cons_zero(0)) -> zero(0) [0] encArg(cons_zero(true)) -> zero(true) [0] encArg(cons_zero(false)) -> zero(false) [0] encArg(cons_zero(cons_active(x_11673))) -> zero(active(encArg(x_11673))) [0] encArg(cons_zero(cons_mark(x_11674))) -> zero(mark(encArg(x_11674))) [0] encArg(cons_zero(cons_fact(x_11675))) -> zero(fact(encArg(x_11675))) [0] encArg(cons_zero(cons_if(x_11676, x_2557, x_3185))) -> zero(if(encArg(x_11676), encArg(x_2557), encArg(x_3185))) [0] encArg(cons_zero(cons_zero(x_11677))) -> zero(zero(encArg(x_11677))) [0] encArg(cons_zero(cons_s(x_11678))) -> zero(s(encArg(x_11678))) [0] encArg(cons_zero(cons_prod(x_11679, x_2558))) -> zero(prod(encArg(x_11679), encArg(x_2558))) [0] encArg(cons_zero(cons_p(x_11680))) -> zero(p(encArg(x_11680))) [0] encArg(cons_zero(cons_add(x_11681, x_2559))) -> zero(add(encArg(x_11681), encArg(x_2559))) [0] encArg(cons_zero(x_1)) -> zero(null_encArg) [0] encArg(cons_s(0)) -> s(0) [0] encArg(cons_s(true)) -> s(true) [0] encArg(cons_s(false)) -> s(false) [0] encArg(cons_s(cons_active(x_11682))) -> s(active(encArg(x_11682))) [0] encArg(cons_s(cons_mark(x_11683))) -> s(mark(encArg(x_11683))) [0] encArg(cons_s(cons_fact(x_11684))) -> s(fact(encArg(x_11684))) [0] encArg(cons_s(cons_if(x_11685, x_2560, x_3186))) -> s(if(encArg(x_11685), encArg(x_2560), encArg(x_3186))) [0] encArg(cons_s(cons_zero(x_11686))) -> s(zero(encArg(x_11686))) [0] encArg(cons_s(cons_s(x_11687))) -> s(s(encArg(x_11687))) [0] encArg(cons_s(cons_prod(x_11688, x_2561))) -> s(prod(encArg(x_11688), encArg(x_2561))) [0] encArg(cons_s(cons_p(x_11689))) -> s(p(encArg(x_11689))) [0] encArg(cons_s(cons_add(x_11690, x_2562))) -> s(add(encArg(x_11690), encArg(x_2562))) [0] encArg(cons_s(x_1)) -> s(null_encArg) [0] encArg(cons_prod(x_1, x_2)) -> prod(encArg(x_1), encArg(x_2)) [0] encArg(cons_p(0)) -> p(0) [0] encArg(cons_p(true)) -> p(true) [0] encArg(cons_p(false)) -> p(false) [0] encArg(cons_p(cons_active(x_11817))) -> p(active(encArg(x_11817))) [0] encArg(cons_p(cons_mark(x_11818))) -> p(mark(encArg(x_11818))) [0] encArg(cons_p(cons_fact(x_11819))) -> p(fact(encArg(x_11819))) [0] encArg(cons_p(cons_if(x_11820, x_2605, x_3201))) -> p(if(encArg(x_11820), encArg(x_2605), encArg(x_3201))) [0] encArg(cons_p(cons_zero(x_11821))) -> p(zero(encArg(x_11821))) [0] encArg(cons_p(cons_s(x_11822))) -> p(s(encArg(x_11822))) [0] encArg(cons_p(cons_prod(x_11823, x_2606))) -> p(prod(encArg(x_11823), encArg(x_2606))) [0] encArg(cons_p(cons_p(x_11824))) -> p(p(encArg(x_11824))) [0] encArg(cons_p(cons_add(x_11825, x_2607))) -> p(add(encArg(x_11825), encArg(x_2607))) [0] encArg(cons_p(x_1)) -> p(null_encArg) [0] encArg(cons_add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) [0] encode_active(0) -> active(0) [0] encode_active(true) -> active(true) [0] encode_active(false) -> active(false) [0] encode_active(cons_active(x_11952)) -> active(active(encArg(x_11952))) [0] encode_active(cons_mark(x_11953)) -> active(mark(encArg(x_11953))) [0] encode_active(cons_fact(x_11954)) -> active(fact(encArg(x_11954))) [0] encode_active(cons_if(x_11955, x_2650, x_3216)) -> active(if(encArg(x_11955), encArg(x_2650), encArg(x_3216))) [0] encode_active(cons_zero(x_11956)) -> active(zero(encArg(x_11956))) [0] encode_active(cons_s(x_11957)) -> active(s(encArg(x_11957))) [0] encode_active(cons_prod(x_11958, x_2651)) -> active(prod(encArg(x_11958), encArg(x_2651))) [0] encode_active(cons_p(x_11959)) -> active(p(encArg(x_11959))) [0] encode_active(cons_add(x_11960, x_2652)) -> active(add(encArg(x_11960), encArg(x_2652))) [0] encode_active(x_1) -> active(null_encArg) [0] encode_fact(0) -> fact(0) [0] encode_fact(true) -> fact(true) [0] encode_fact(false) -> fact(false) [0] encode_fact(cons_active(x_11961)) -> fact(active(encArg(x_11961))) [0] encode_fact(cons_mark(x_11962)) -> fact(mark(encArg(x_11962))) [0] encode_fact(cons_fact(x_11963)) -> fact(fact(encArg(x_11963))) [0] encode_fact(cons_if(x_11964, x_2653, x_3217)) -> fact(if(encArg(x_11964), encArg(x_2653), encArg(x_3217))) [0] encode_fact(cons_zero(x_11965)) -> fact(zero(encArg(x_11965))) [0] encode_fact(cons_s(x_11966)) -> fact(s(encArg(x_11966))) [0] encode_fact(cons_prod(x_11967, x_2654)) -> fact(prod(encArg(x_11967), encArg(x_2654))) [0] encode_fact(cons_p(x_11968)) -> fact(p(encArg(x_11968))) [0] encode_fact(cons_add(x_11969, x_2655)) -> fact(add(encArg(x_11969), encArg(x_2655))) [0] encode_fact(x_1) -> fact(null_encArg) [0] encode_mark(0) -> mark(0) [0] encode_mark(true) -> mark(true) [0] encode_mark(false) -> mark(false) [0] encode_mark(cons_active(x_11970)) -> mark(active(encArg(x_11970))) [0] encode_mark(cons_mark(x_11971)) -> mark(mark(encArg(x_11971))) [0] encode_mark(cons_fact(x_11972)) -> mark(fact(encArg(x_11972))) [0] encode_mark(cons_if(x_11973, x_2656, x_3218)) -> mark(if(encArg(x_11973), encArg(x_2656), encArg(x_3218))) [0] encode_mark(cons_zero(x_11974)) -> mark(zero(encArg(x_11974))) [0] encode_mark(cons_s(x_11975)) -> mark(s(encArg(x_11975))) [0] encode_mark(cons_prod(x_11976, x_2657)) -> mark(prod(encArg(x_11976), encArg(x_2657))) [0] encode_mark(cons_p(x_11977)) -> mark(p(encArg(x_11977))) [0] encode_mark(cons_add(x_11978, x_2658)) -> mark(add(encArg(x_11978), encArg(x_2658))) [0] encode_mark(x_1) -> mark(null_encArg) [0] encode_if(x_1, x_2, x_3) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) [0] encode_zero(0) -> zero(0) [0] encode_zero(true) -> zero(true) [0] encode_zero(false) -> zero(false) [0] encode_zero(cons_active(x_13626)) -> zero(active(encArg(x_13626))) [0] encode_zero(cons_mark(x_13627)) -> zero(mark(encArg(x_13627))) [0] encode_zero(cons_fact(x_13628)) -> zero(fact(encArg(x_13628))) [0] encode_zero(cons_if(x_13629, x_21208, x_3402)) -> zero(if(encArg(x_13629), encArg(x_21208), encArg(x_3402))) [0] encode_zero(cons_zero(x_13630)) -> zero(zero(encArg(x_13630))) [0] encode_zero(cons_s(x_13631)) -> zero(s(encArg(x_13631))) [0] encode_zero(cons_prod(x_13632, x_21209)) -> zero(prod(encArg(x_13632), encArg(x_21209))) [0] encode_zero(cons_p(x_13633)) -> zero(p(encArg(x_13633))) [0] encode_zero(cons_add(x_13634, x_21210)) -> zero(add(encArg(x_13634), encArg(x_21210))) [0] encode_zero(x_1) -> zero(null_encArg) [0] encode_s(0) -> s(0) [0] encode_s(true) -> s(true) [0] encode_s(false) -> s(false) [0] encode_s(cons_active(x_13635)) -> s(active(encArg(x_13635))) [0] encode_s(cons_mark(x_13636)) -> s(mark(encArg(x_13636))) [0] encode_s(cons_fact(x_13637)) -> s(fact(encArg(x_13637))) [0] encode_s(cons_if(x_13638, x_21211, x_3403)) -> s(if(encArg(x_13638), encArg(x_21211), encArg(x_3403))) [0] encode_s(cons_zero(x_13639)) -> s(zero(encArg(x_13639))) [0] encode_s(cons_s(x_13640)) -> s(s(encArg(x_13640))) [0] encode_s(cons_prod(x_13641, x_21212)) -> s(prod(encArg(x_13641), encArg(x_21212))) [0] encode_s(cons_p(x_13642)) -> s(p(encArg(x_13642))) [0] encode_s(cons_add(x_13643, x_21213)) -> s(add(encArg(x_13643), encArg(x_21213))) [0] encode_s(x_1) -> s(null_encArg) [0] encode_0 -> 0 [0] encode_prod(x_1, x_2) -> prod(encArg(x_1), encArg(x_2)) [0] encode_p(0) -> p(0) [0] encode_p(true) -> p(true) [0] encode_p(false) -> p(false) [0] encode_p(cons_active(x_13770)) -> p(active(encArg(x_13770))) [0] encode_p(cons_mark(x_13771)) -> p(mark(encArg(x_13771))) [0] encode_p(cons_fact(x_13772)) -> p(fact(encArg(x_13772))) [0] encode_p(cons_if(x_13773, x_21256, x_3418)) -> p(if(encArg(x_13773), encArg(x_21256), encArg(x_3418))) [0] encode_p(cons_zero(x_13774)) -> p(zero(encArg(x_13774))) [0] encode_p(cons_s(x_13775)) -> p(s(encArg(x_13775))) [0] encode_p(cons_prod(x_13776, x_21257)) -> p(prod(encArg(x_13776), encArg(x_21257))) [0] encode_p(cons_p(x_13777)) -> p(p(encArg(x_13777))) [0] encode_p(cons_add(x_13778, x_21258)) -> p(add(encArg(x_13778), encArg(x_21258))) [0] encode_p(x_1) -> p(null_encArg) [0] encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) [0] encode_true -> true [0] encode_false -> false [0] s(x0) -> c_s(x0) [0] active(x0) -> c_active(x0) [0] p(x0) -> c_p(x0) [0] zero(x0) -> c_zero(x0) [0] fact(x0) -> c_fact(x0) [0] add(x0, x1) -> c_add(x0, x1) [0] if(x0, x1, x2) -> c_if(x0, x1, x2) [0] prod(x0, x1) -> c_prod(x0, x1) [0] mark(x0) -> c_mark(x0) [0] encArg(v0) -> null_encArg [0] encode_active(v0) -> null_encode_active [0] encode_fact(v0) -> null_encode_fact [0] encode_mark(v0) -> null_encode_mark [0] encode_if(v0, v1, v2) -> null_encode_if [0] encode_zero(v0) -> null_encode_zero [0] encode_s(v0) -> null_encode_s [0] encode_0 -> null_encode_0 [0] encode_prod(v0, v1) -> null_encode_prod [0] encode_p(v0) -> null_encode_p [0] encode_add(v0, v1) -> null_encode_add [0] encode_true -> null_encode_true [0] encode_false -> null_encode_false [0] s(v0) -> null_s [0] active(v0) -> null_active [0] p(v0) -> null_p [0] zero(v0) -> null_zero [0] fact(v0) -> null_fact [0] add(v0, v1) -> null_add [0] if(v0, v1, v2) -> null_if [0] prod(v0, v1) -> null_prod [0] mark(v0) -> null_mark [0] The TRS has the following type information: mark :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark 0 :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark active :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark true :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark false :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_prod :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark prod :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark add :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_active :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark p :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_mark :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark if :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_s :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark s :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_add :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_p :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_if :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark fact :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_fact :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark zero :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark c_zero :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encArg :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_active :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_mark :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_fact :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_if :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_zero :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_s :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_prod :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_p :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark cons_add :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_active :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_fact :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_mark :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_if :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_zero :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_s :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_0 :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_prod :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_p :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_add :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark -> 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_true :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark encode_false :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encArg :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_active :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_fact :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_mark :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_if :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_zero :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_s :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_0 :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_prod :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_p :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_add :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_true :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_encode_false :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_s :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_active :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_p :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_zero :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_fact :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_add :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_if :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_prod :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark null_mark :: 0:true:false:c_prod:c_active:c_mark:c_s:c_add:c_p:c_if:c_fact:c_zero:cons_active:cons_mark:cons_fact:cons_if:cons_zero:cons_s:cons_prod:cons_p:cons_add:null_encArg:null_encode_active:null_encode_fact:null_encode_mark:null_encode_if:null_encode_zero:null_encode_s:null_encode_0:null_encode_prod:null_encode_p:null_encode_add:null_encode_true:null_encode_false:null_s:null_active:null_p:null_zero:null_fact:null_add:null_if:null_prod:null_mark Rewrite Strategy: INNERMOST ---------------------------------------- (31) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: 0 => 0 true => 2 false => 1 null_encArg => 0 null_encode_active => 0 null_encode_fact => 0 null_encode_mark => 0 null_encode_if => 0 null_encode_zero => 0 null_encode_s => 0 null_encode_0 => 0 null_encode_prod => 0 null_encode_p => 0 null_encode_add => 0 null_encode_true => 0 null_encode_false => 0 null_s => 0 null_active => 0 null_p => 0 null_zero => 0 null_fact => 0 null_add => 0 null_if => 0 null_prod => 0 null_mark => 0 ---------------------------------------- (32) Obligation: Complexity RNTS consisting of the following rules: active(z) -{ 1 }-> mark(X) :|: z = 1 + (1 + X), X >= 0 active(z) -{ 1 }-> mark(X) :|: Y >= 0, X >= 0, z = 1 + 2 + X + Y active(z) -{ 1 }-> mark(X) :|: z = 1 + 0 + X, X >= 0 active(z) -{ 1 }-> mark(Y) :|: Y >= 0, z = 1 + 1 + X + Y, X >= 0 active(z) -{ 2 }-> mark(s(add(X, X284))) :|: z = 1 + (1 + X) + (1 + X284), X >= 0, X284 >= 0 active(z) -{ 2 }-> mark(s(add(X, X285))) :|: X285 >= 0, z = 1 + (1 + X) + (1 + X285), X >= 0 active(z) -{ 2 }-> mark(s(add(X1103, Y))) :|: z = 1 + (1 + (1 + X1103)) + Y, Y >= 0, X1103 >= 0 active(z) -{ 2 }-> mark(s(add(X1104, Y))) :|: X1104 >= 0, Y >= 0, z = 1 + (1 + (1 + X1104)) + Y active(z) -{ 1 }-> mark(s(0)) :|: z = 1 + (1 + X) + Y, Y >= 0, X >= 0 active(z) -{ 1 }-> mark(s(1 + X + Y)) :|: z = 1 + (1 + X) + Y, Y >= 0, X >= 0 active(z) -{ 1 }-> mark(if(zero(X), s(0), prod(X, fact(p(X))))) :|: z = 1 + X, X >= 0 active(z) -{ 2 }-> mark(add(Y, prod(X1108, Y))) :|: z = 1 + (1 + (1 + X1108)) + Y, X1108 >= 0, Y >= 0 active(z) -{ 2 }-> mark(add(Y, prod(X1109, Y))) :|: Y >= 0, z = 1 + (1 + (1 + X1109)) + Y, X1109 >= 0 active(z) -{ 1 }-> mark(add(Y, 0)) :|: z = 1 + (1 + X) + Y, Y >= 0, X >= 0 active(z) -{ 1 }-> mark(add(Y, 1 + X + Y)) :|: z = 1 + (1 + X) + Y, Y >= 0, X >= 0 active(z) -{ 2 }-> mark(add(1 + X297, prod(X, X297))) :|: X >= 0, z = 1 + (1 + X) + (1 + X297), X297 >= 0 active(z) -{ 2 }-> mark(add(1 + X298, prod(X, X298))) :|: X >= 0, z = 1 + (1 + X) + (1 + X298), X298 >= 0 active(z) -{ 1 }-> mark(2) :|: z = 1 + 0 active(z) -{ 1 }-> mark(1) :|: z = 1 + (1 + X), X >= 0 active(z) -{ 1 }-> mark(0) :|: z = 1 + 0 + X, X >= 0 active(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 active(z) -{ 0 }-> 1 + x0 :|: z = x0, x0 >= 0 add(z, z') -{ 1 }-> add(X1, X2) :|: X1 >= 0, z = 1 + X1, X2 >= 0, z' = X2 add(z, z') -{ 1 }-> add(X1, X2) :|: X1 >= 0, z' = 1 + X2, X2 >= 0, z = X1 add(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 add(z, z') -{ 0 }-> 1 + x0 + x1 :|: z = x0, x0 >= 0, x1 >= 0, z' = x1 encArg(z) -{ 0 }-> zero(zero(encArg(x_11677))) :|: z = 1 + (1 + x_11677), x_11677 >= 0 encArg(z) -{ 0 }-> zero(s(encArg(x_11678))) :|: x_11678 >= 0, z = 1 + (1 + x_11678) encArg(z) -{ 0 }-> zero(prod(encArg(x_11679), encArg(x_2558))) :|: z = 1 + (1 + x_11679 + x_2558), x_11679 >= 0, x_2558 >= 0 encArg(z) -{ 0 }-> zero(p(encArg(x_11680))) :|: z = 1 + (1 + x_11680), x_11680 >= 0 encArg(z) -{ 0 }-> zero(mark(encArg(x_11674))) :|: z = 1 + (1 + x_11674), x_11674 >= 0 encArg(z) -{ 0 }-> zero(if(encArg(x_11676), encArg(x_2557), encArg(x_3185))) :|: z = 1 + (1 + x_11676 + x_2557 + x_3185), x_3185 >= 0, x_2557 >= 0, x_11676 >= 0 encArg(z) -{ 0 }-> zero(fact(encArg(x_11675))) :|: z = 1 + (1 + x_11675), x_11675 >= 0 encArg(z) -{ 0 }-> zero(add(encArg(x_11681), encArg(x_2559))) :|: z = 1 + (1 + x_11681 + x_2559), x_11681 >= 0, x_2559 >= 0 encArg(z) -{ 0 }-> zero(active(encArg(x_11673))) :|: x_11673 >= 0, z = 1 + (1 + x_11673) encArg(z) -{ 0 }-> zero(2) :|: z = 1 + 2 encArg(z) -{ 0 }-> zero(1) :|: z = 1 + 1 encArg(z) -{ 0 }-> zero(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> zero(0) :|: z = 1 + x_1, x_1 >= 0 encArg(z) -{ 0 }-> s(zero(encArg(x_11686))) :|: z = 1 + (1 + x_11686), x_11686 >= 0 encArg(z) -{ 0 }-> s(s(encArg(x_11687))) :|: x_11687 >= 0, z = 1 + (1 + x_11687) encArg(z) -{ 0 }-> s(prod(encArg(x_11688), encArg(x_2561))) :|: z = 1 + (1 + x_11688 + x_2561), x_11688 >= 0, x_2561 >= 0 encArg(z) -{ 0 }-> s(p(encArg(x_11689))) :|: x_11689 >= 0, z = 1 + (1 + x_11689) encArg(z) -{ 0 }-> s(mark(encArg(x_11683))) :|: x_11683 >= 0, z = 1 + (1 + x_11683) encArg(z) -{ 0 }-> s(if(encArg(x_11685), encArg(x_2560), encArg(x_3186))) :|: x_3186 >= 0, x_11685 >= 0, x_2560 >= 0, z = 1 + (1 + x_11685 + x_2560 + x_3186) encArg(z) -{ 0 }-> s(fact(encArg(x_11684))) :|: z = 1 + (1 + x_11684), x_11684 >= 0 encArg(z) -{ 0 }-> s(add(encArg(x_11690), encArg(x_2562))) :|: x_2562 >= 0, x_11690 >= 0, z = 1 + (1 + x_11690 + x_2562) encArg(z) -{ 0 }-> s(active(encArg(x_11682))) :|: x_11682 >= 0, z = 1 + (1 + x_11682) encArg(z) -{ 0 }-> s(2) :|: z = 1 + 2 encArg(z) -{ 0 }-> s(1) :|: z = 1 + 1 encArg(z) -{ 0 }-> s(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> s(0) :|: z = 1 + x_1, x_1 >= 0 encArg(z) -{ 0 }-> prod(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> p(zero(encArg(x_11821))) :|: x_11821 >= 0, z = 1 + (1 + x_11821) encArg(z) -{ 0 }-> p(s(encArg(x_11822))) :|: x_11822 >= 0, z = 1 + (1 + x_11822) encArg(z) -{ 0 }-> p(prod(encArg(x_11823), encArg(x_2606))) :|: x_2606 >= 0, x_11823 >= 0, z = 1 + (1 + x_11823 + x_2606) encArg(z) -{ 0 }-> p(p(encArg(x_11824))) :|: z = 1 + (1 + x_11824), x_11824 >= 0 encArg(z) -{ 0 }-> p(mark(encArg(x_11818))) :|: z = 1 + (1 + x_11818), x_11818 >= 0 encArg(z) -{ 0 }-> p(if(encArg(x_11820), encArg(x_2605), encArg(x_3201))) :|: z = 1 + (1 + x_11820 + x_2605 + x_3201), x_2605 >= 0, x_11820 >= 0, x_3201 >= 0 encArg(z) -{ 0 }-> p(fact(encArg(x_11819))) :|: x_11819 >= 0, z = 1 + (1 + x_11819) encArg(z) -{ 0 }-> p(add(encArg(x_11825), encArg(x_2607))) :|: z = 1 + (1 + x_11825 + x_2607), x_11825 >= 0, x_2607 >= 0 encArg(z) -{ 0 }-> p(active(encArg(x_11817))) :|: z = 1 + (1 + x_11817), x_11817 >= 0 encArg(z) -{ 0 }-> p(2) :|: z = 1 + 2 encArg(z) -{ 0 }-> p(1) :|: z = 1 + 1 encArg(z) -{ 0 }-> p(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> p(0) :|: z = 1 + x_1, x_1 >= 0 encArg(z) -{ 0 }-> mark(zero(encArg(x_112))) :|: x_112 >= 0, z = 1 + (1 + x_112) encArg(z) -{ 0 }-> mark(s(encArg(x_113))) :|: x_113 >= 0, z = 1 + (1 + x_113) encArg(z) -{ 0 }-> mark(prod(encArg(x_114), encArg(x_23))) :|: x_114 >= 0, x_23 >= 0, z = 1 + (1 + x_114 + x_23) encArg(z) -{ 0 }-> mark(p(encArg(x_115))) :|: z = 1 + (1 + x_115), x_115 >= 0 encArg(z) -{ 0 }-> mark(mark(encArg(x_19))) :|: z = 1 + (1 + x_19), x_19 >= 0 encArg(z) -{ 0 }-> mark(if(encArg(x_111), encArg(x_22), encArg(x_3''))) :|: z = 1 + (1 + x_111 + x_22 + x_3''), x_22 >= 0, x_3'' >= 0, x_111 >= 0 encArg(z) -{ 0 }-> mark(fact(encArg(x_110))) :|: z = 1 + (1 + x_110), x_110 >= 0 encArg(z) -{ 0 }-> mark(add(encArg(x_116), encArg(x_24))) :|: z = 1 + (1 + x_116 + x_24), x_116 >= 0, x_24 >= 0 encArg(z) -{ 0 }-> mark(active(encArg(x_18))) :|: z = 1 + (1 + x_18), x_18 >= 0 encArg(z) -{ 0 }-> mark(2) :|: z = 1 + 2 encArg(z) -{ 0 }-> mark(1) :|: z = 1 + 1 encArg(z) -{ 0 }-> mark(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> mark(0) :|: z = 1 + x_1, x_1 >= 0 encArg(z) -{ 0 }-> if(encArg(x_1), encArg(x_2), encArg(x_3)) :|: x_1 >= 0, z = 1 + x_1 + x_2 + x_3, x_3 >= 0, x_2 >= 0 encArg(z) -{ 0 }-> fact(zero(encArg(x_121))) :|: z = 1 + (1 + x_121), x_121 >= 0 encArg(z) -{ 0 }-> fact(s(encArg(x_122))) :|: x_122 >= 0, z = 1 + (1 + x_122) encArg(z) -{ 0 }-> fact(prod(encArg(x_123), encArg(x_26))) :|: x_123 >= 0, x_26 >= 0, z = 1 + (1 + x_123 + x_26) encArg(z) -{ 0 }-> fact(p(encArg(x_124))) :|: x_124 >= 0, z = 1 + (1 + x_124) encArg(z) -{ 0 }-> fact(mark(encArg(x_118))) :|: z = 1 + (1 + x_118), x_118 >= 0 encArg(z) -{ 0 }-> fact(if(encArg(x_120), encArg(x_25), encArg(x_31))) :|: x_120 >= 0, z = 1 + (1 + x_120 + x_25 + x_31), x_25 >= 0, x_31 >= 0 encArg(z) -{ 0 }-> fact(fact(encArg(x_119))) :|: z = 1 + (1 + x_119), x_119 >= 0 encArg(z) -{ 0 }-> fact(add(encArg(x_125), encArg(x_27))) :|: x_125 >= 0, z = 1 + (1 + x_125 + x_27), x_27 >= 0 encArg(z) -{ 0 }-> fact(active(encArg(x_117))) :|: z = 1 + (1 + x_117), x_117 >= 0 encArg(z) -{ 0 }-> fact(2) :|: z = 1 + 2 encArg(z) -{ 0 }-> fact(1) :|: z = 1 + 1 encArg(z) -{ 0 }-> fact(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> fact(0) :|: z = 1 + x_1, x_1 >= 0 encArg(z) -{ 0 }-> add(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> active(zero(encArg(x_13))) :|: z = 1 + (1 + x_13), x_13 >= 0 encArg(z) -{ 0 }-> active(s(encArg(x_14))) :|: x_14 >= 0, z = 1 + (1 + x_14) encArg(z) -{ 0 }-> active(prod(encArg(x_15), encArg(x_2''))) :|: x_15 >= 0, z = 1 + (1 + x_15 + x_2''), x_2'' >= 0 encArg(z) -{ 0 }-> active(p(encArg(x_16))) :|: x_16 >= 0, z = 1 + (1 + x_16) encArg(z) -{ 0 }-> active(mark(encArg(x_1''))) :|: z = 1 + (1 + x_1''), x_1'' >= 0 encArg(z) -{ 0 }-> active(if(encArg(x_12), encArg(x_2'), encArg(x_3'))) :|: z = 1 + (1 + x_12 + x_2' + x_3'), x_3' >= 0, x_2' >= 0, x_12 >= 0 encArg(z) -{ 0 }-> active(fact(encArg(x_11))) :|: x_11 >= 0, z = 1 + (1 + x_11) encArg(z) -{ 0 }-> active(add(encArg(x_17), encArg(x_21))) :|: z = 1 + (1 + x_17 + x_21), x_17 >= 0, x_21 >= 0 encArg(z) -{ 0 }-> active(active(encArg(x_1'))) :|: z = 1 + (1 + x_1'), x_1' >= 0 encArg(z) -{ 0 }-> active(2) :|: z = 1 + 2 encArg(z) -{ 0 }-> active(1) :|: z = 1 + 1 encArg(z) -{ 0 }-> active(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> active(0) :|: z = 1 + x_1, x_1 >= 0 encArg(z) -{ 0 }-> 2 :|: z = 2 encArg(z) -{ 0 }-> 1 :|: z = 1 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 encode_0 -{ 0 }-> 0 :|: encode_active(z) -{ 0 }-> active(zero(encArg(x_11956))) :|: x_11956 >= 0, z = 1 + x_11956 encode_active(z) -{ 0 }-> active(s(encArg(x_11957))) :|: x_11957 >= 0, z = 1 + x_11957 encode_active(z) -{ 0 }-> active(prod(encArg(x_11958), encArg(x_2651))) :|: z = 1 + x_11958 + x_2651, x_11958 >= 0, x_2651 >= 0 encode_active(z) -{ 0 }-> active(p(encArg(x_11959))) :|: z = 1 + x_11959, x_11959 >= 0 encode_active(z) -{ 0 }-> active(mark(encArg(x_11953))) :|: z = 1 + x_11953, x_11953 >= 0 encode_active(z) -{ 0 }-> active(if(encArg(x_11955), encArg(x_2650), encArg(x_3216))) :|: x_3216 >= 0, z = 1 + x_11955 + x_2650 + x_3216, x_11955 >= 0, x_2650 >= 0 encode_active(z) -{ 0 }-> active(fact(encArg(x_11954))) :|: x_11954 >= 0, z = 1 + x_11954 encode_active(z) -{ 0 }-> active(add(encArg(x_11960), encArg(x_2652))) :|: x_11960 >= 0, z = 1 + x_11960 + x_2652, x_2652 >= 0 encode_active(z) -{ 0 }-> active(active(encArg(x_11952))) :|: x_11952 >= 0, z = 1 + x_11952 encode_active(z) -{ 0 }-> active(2) :|: z = 2 encode_active(z) -{ 0 }-> active(1) :|: z = 1 encode_active(z) -{ 0 }-> active(0) :|: z = 0 encode_active(z) -{ 0 }-> active(0) :|: x_1 >= 0, z = x_1 encode_active(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 encode_add(z, z') -{ 0 }-> add(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, x_2 >= 0, z = x_1, z' = x_2 encode_add(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 encode_fact(z) -{ 0 }-> fact(zero(encArg(x_11965))) :|: z = 1 + x_11965, x_11965 >= 0 encode_fact(z) -{ 0 }-> fact(s(encArg(x_11966))) :|: z = 1 + x_11966, x_11966 >= 0 encode_fact(z) -{ 0 }-> fact(prod(encArg(x_11967), encArg(x_2654))) :|: z = 1 + x_11967 + x_2654, x_2654 >= 0, x_11967 >= 0 encode_fact(z) -{ 0 }-> fact(p(encArg(x_11968))) :|: x_11968 >= 0, z = 1 + x_11968 encode_fact(z) -{ 0 }-> fact(mark(encArg(x_11962))) :|: x_11962 >= 0, z = 1 + x_11962 encode_fact(z) -{ 0 }-> fact(if(encArg(x_11964), encArg(x_2653), encArg(x_3217))) :|: z = 1 + x_11964 + x_2653 + x_3217, x_3217 >= 0, x_2653 >= 0, x_11964 >= 0 encode_fact(z) -{ 0 }-> fact(fact(encArg(x_11963))) :|: z = 1 + x_11963, x_11963 >= 0 encode_fact(z) -{ 0 }-> fact(add(encArg(x_11969), encArg(x_2655))) :|: z = 1 + x_11969 + x_2655, x_2655 >= 0, x_11969 >= 0 encode_fact(z) -{ 0 }-> fact(active(encArg(x_11961))) :|: x_11961 >= 0, z = 1 + x_11961 encode_fact(z) -{ 0 }-> fact(2) :|: z = 2 encode_fact(z) -{ 0 }-> fact(1) :|: z = 1 encode_fact(z) -{ 0 }-> fact(0) :|: z = 0 encode_fact(z) -{ 0 }-> fact(0) :|: x_1 >= 0, z = x_1 encode_fact(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 encode_false -{ 0 }-> 1 :|: encode_false -{ 0 }-> 0 :|: encode_if(z, z', z'') -{ 0 }-> if(encArg(x_1), encArg(x_2), encArg(x_3)) :|: x_1 >= 0, x_3 >= 0, x_2 >= 0, z = x_1, z' = x_2, z'' = x_3 encode_if(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 encode_mark(z) -{ 0 }-> mark(zero(encArg(x_11974))) :|: z = 1 + x_11974, x_11974 >= 0 encode_mark(z) -{ 0 }-> mark(s(encArg(x_11975))) :|: z = 1 + x_11975, x_11975 >= 0 encode_mark(z) -{ 0 }-> mark(prod(encArg(x_11976), encArg(x_2657))) :|: z = 1 + x_11976 + x_2657, x_11976 >= 0, x_2657 >= 0 encode_mark(z) -{ 0 }-> mark(p(encArg(x_11977))) :|: z = 1 + x_11977, x_11977 >= 0 encode_mark(z) -{ 0 }-> mark(mark(encArg(x_11971))) :|: z = 1 + x_11971, x_11971 >= 0 encode_mark(z) -{ 0 }-> mark(if(encArg(x_11973), encArg(x_2656), encArg(x_3218))) :|: z = 1 + x_11973 + x_2656 + x_3218, x_2656 >= 0, x_11973 >= 0, x_3218 >= 0 encode_mark(z) -{ 0 }-> mark(fact(encArg(x_11972))) :|: z = 1 + x_11972, x_11972 >= 0 encode_mark(z) -{ 0 }-> mark(add(encArg(x_11978), encArg(x_2658))) :|: x_11978 >= 0, z = 1 + x_11978 + x_2658, x_2658 >= 0 encode_mark(z) -{ 0 }-> mark(active(encArg(x_11970))) :|: x_11970 >= 0, z = 1 + x_11970 encode_mark(z) -{ 0 }-> mark(2) :|: z = 2 encode_mark(z) -{ 0 }-> mark(1) :|: z = 1 encode_mark(z) -{ 0 }-> mark(0) :|: z = 0 encode_mark(z) -{ 0 }-> mark(0) :|: x_1 >= 0, z = x_1 encode_mark(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 encode_p(z) -{ 0 }-> p(zero(encArg(x_13774))) :|: z = 1 + x_13774, x_13774 >= 0 encode_p(z) -{ 0 }-> p(s(encArg(x_13775))) :|: x_13775 >= 0, z = 1 + x_13775 encode_p(z) -{ 0 }-> p(prod(encArg(x_13776), encArg(x_21257))) :|: x_13776 >= 0, z = 1 + x_13776 + x_21257, x_21257 >= 0 encode_p(z) -{ 0 }-> p(p(encArg(x_13777))) :|: x_13777 >= 0, z = 1 + x_13777 encode_p(z) -{ 0 }-> p(mark(encArg(x_13771))) :|: z = 1 + x_13771, x_13771 >= 0 encode_p(z) -{ 0 }-> p(if(encArg(x_13773), encArg(x_21256), encArg(x_3418))) :|: z = 1 + x_13773 + x_21256 + x_3418, x_21256 >= 0, x_3418 >= 0, x_13773 >= 0 encode_p(z) -{ 0 }-> p(fact(encArg(x_13772))) :|: x_13772 >= 0, z = 1 + x_13772 encode_p(z) -{ 0 }-> p(add(encArg(x_13778), encArg(x_21258))) :|: z = 1 + x_13778 + x_21258, x_13778 >= 0, x_21258 >= 0 encode_p(z) -{ 0 }-> p(active(encArg(x_13770))) :|: z = 1 + x_13770, x_13770 >= 0 encode_p(z) -{ 0 }-> p(2) :|: z = 2 encode_p(z) -{ 0 }-> p(1) :|: z = 1 encode_p(z) -{ 0 }-> p(0) :|: z = 0 encode_p(z) -{ 0 }-> p(0) :|: x_1 >= 0, z = x_1 encode_p(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 encode_prod(z, z') -{ 0 }-> prod(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, x_2 >= 0, z = x_1, z' = x_2 encode_prod(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 encode_s(z) -{ 0 }-> s(zero(encArg(x_13639))) :|: x_13639 >= 0, z = 1 + x_13639 encode_s(z) -{ 0 }-> s(s(encArg(x_13640))) :|: x_13640 >= 0, z = 1 + x_13640 encode_s(z) -{ 0 }-> s(prod(encArg(x_13641), encArg(x_21212))) :|: x_21212 >= 0, x_13641 >= 0, z = 1 + x_13641 + x_21212 encode_s(z) -{ 0 }-> s(p(encArg(x_13642))) :|: x_13642 >= 0, z = 1 + x_13642 encode_s(z) -{ 0 }-> s(mark(encArg(x_13636))) :|: x_13636 >= 0, z = 1 + x_13636 encode_s(z) -{ 0 }-> s(if(encArg(x_13638), encArg(x_21211), encArg(x_3403))) :|: z = 1 + x_13638 + x_21211 + x_3403, x_3403 >= 0, x_13638 >= 0, x_21211 >= 0 encode_s(z) -{ 0 }-> s(fact(encArg(x_13637))) :|: z = 1 + x_13637, x_13637 >= 0 encode_s(z) -{ 0 }-> s(add(encArg(x_13643), encArg(x_21213))) :|: x_21213 >= 0, z = 1 + x_13643 + x_21213, x_13643 >= 0 encode_s(z) -{ 0 }-> s(active(encArg(x_13635))) :|: x_13635 >= 0, z = 1 + x_13635 encode_s(z) -{ 0 }-> s(2) :|: z = 2 encode_s(z) -{ 0 }-> s(1) :|: z = 1 encode_s(z) -{ 0 }-> s(0) :|: z = 0 encode_s(z) -{ 0 }-> s(0) :|: x_1 >= 0, z = x_1 encode_s(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 encode_true -{ 0 }-> 2 :|: encode_true -{ 0 }-> 0 :|: encode_zero(z) -{ 0 }-> zero(zero(encArg(x_13630))) :|: z = 1 + x_13630, x_13630 >= 0 encode_zero(z) -{ 0 }-> zero(s(encArg(x_13631))) :|: z = 1 + x_13631, x_13631 >= 0 encode_zero(z) -{ 0 }-> zero(prod(encArg(x_13632), encArg(x_21209))) :|: x_21209 >= 0, x_13632 >= 0, z = 1 + x_13632 + x_21209 encode_zero(z) -{ 0 }-> zero(p(encArg(x_13633))) :|: x_13633 >= 0, z = 1 + x_13633 encode_zero(z) -{ 0 }-> zero(mark(encArg(x_13627))) :|: z = 1 + x_13627, x_13627 >= 0 encode_zero(z) -{ 0 }-> zero(if(encArg(x_13629), encArg(x_21208), encArg(x_3402))) :|: x_13629 >= 0, x_3402 >= 0, z = 1 + x_13629 + x_21208 + x_3402, x_21208 >= 0 encode_zero(z) -{ 0 }-> zero(fact(encArg(x_13628))) :|: x_13628 >= 0, z = 1 + x_13628 encode_zero(z) -{ 0 }-> zero(add(encArg(x_13634), encArg(x_21210))) :|: z = 1 + x_13634 + x_21210, x_13634 >= 0, x_21210 >= 0 encode_zero(z) -{ 0 }-> zero(active(encArg(x_13626))) :|: z = 1 + x_13626, x_13626 >= 0 encode_zero(z) -{ 0 }-> zero(2) :|: z = 2 encode_zero(z) -{ 0 }-> zero(1) :|: z = 1 encode_zero(z) -{ 0 }-> zero(0) :|: z = 0 encode_zero(z) -{ 0 }-> zero(0) :|: x_1 >= 0, z = x_1 encode_zero(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 fact(z) -{ 1 }-> fact(X) :|: z = 1 + X, X >= 0 fact(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 fact(z) -{ 0 }-> 1 + x0 :|: z = x0, x0 >= 0 if(z, z', z'') -{ 1 }-> if(X1, X2, X3) :|: X1 >= 0, z = 1 + X1, X3 >= 0, X2 >= 0, z' = X2, z'' = X3 if(z, z', z'') -{ 1 }-> if(X1, X2, X3) :|: X1 >= 0, X3 >= 0, z' = 1 + X2, X2 >= 0, z = X1, z'' = X3 if(z, z', z'') -{ 1 }-> if(X1, X2, X3) :|: X1 >= 0, X3 >= 0, X2 >= 0, z = X1, z' = X2, z'' = 1 + X3 if(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 if(z, z', z'') -{ 0 }-> 1 + x0 + x1 + x2 :|: z = x0, x0 >= 0, x1 >= 0, z' = x1, z'' = x2, x2 >= 0 mark(z) -{ 2 }-> active(zero(active(zero(mark(X302))))) :|: X302 >= 0, z = 1 + (1 + X302) mark(z) -{ 2 }-> active(zero(active(s(mark(X300))))) :|: X300 >= 0, z = 1 + (1 + X300) mark(z) -{ 2 }-> active(zero(active(prod(mark(X1110), mark(X299))))) :|: X1110 >= 0, X299 >= 0, z = 1 + (1 + X1110 + X299) mark(z) -{ 2 }-> active(zero(active(p(mark(X303))))) :|: z = 1 + (1 + X303), X303 >= 0 mark(z) -{ 2 }-> active(zero(active(if(mark(X1112), X2101, X334)))) :|: z = 1 + (1 + X1112 + X2101 + X334), X2101 >= 0, X334 >= 0, X1112 >= 0 mark(z) -{ 2 }-> active(zero(active(fact(mark(X301))))) :|: X301 >= 0, z = 1 + (1 + X301) mark(z) -{ 2 }-> active(zero(active(add(mark(X1111), mark(X2100))))) :|: X1111 >= 0, z = 1 + (1 + X1111 + X2100), X2100 >= 0 mark(z) -{ 2 }-> active(zero(active(2))) :|: z = 1 + 2 mark(z) -{ 2 }-> active(zero(active(1))) :|: z = 1 + 1 mark(z) -{ 2 }-> active(zero(active(0))) :|: z = 1 + 0 mark(z) -{ 1 }-> active(zero(0)) :|: z = 1 + X, X >= 0 mark(z) -{ 1 }-> active(zero(1 + X)) :|: z = 1 + X, X >= 0 mark(z) -{ 2 }-> active(s(active(zero(mark(X74))))) :|: z = 1 + (1 + X74), X74 >= 0 mark(z) -{ 2 }-> active(s(active(s(mark(X72))))) :|: X72 >= 0, z = 1 + (1 + X72) mark(z) -{ 2 }-> active(s(active(prod(mark(X140), mark(X239))))) :|: z = 1 + (1 + X140 + X239), X239 >= 0, X140 >= 0 mark(z) -{ 2 }-> active(s(active(p(mark(X75))))) :|: X75 >= 0, z = 1 + (1 + X75) mark(z) -{ 2 }-> active(s(active(if(mark(X142), X241, X318)))) :|: z = 1 + (1 + X142 + X241 + X318), X318 >= 0, X241 >= 0, X142 >= 0 mark(z) -{ 2 }-> active(s(active(fact(mark(X73))))) :|: X73 >= 0, z = 1 + (1 + X73) mark(z) -{ 2 }-> active(s(active(add(mark(X141), mark(X240))))) :|: X240 >= 0, z = 1 + (1 + X141 + X240), X141 >= 0 mark(z) -{ 2 }-> active(s(active(2))) :|: z = 1 + 2 mark(z) -{ 2 }-> active(s(active(1))) :|: z = 1 + 1 mark(z) -{ 2 }-> active(s(active(0))) :|: z = 1 + 0 mark(z) -{ 1 }-> active(s(0)) :|: z = 1 + X, X >= 0 mark(z) -{ 1 }-> active(s(1 + X)) :|: z = 1 + X, X >= 0 mark(z) -{ 1 }-> active(prod(mark(X1), mark(X2))) :|: X1 >= 0, X2 >= 0, z = 1 + X1 + X2 mark(z) -{ 2 }-> active(p(active(zero(mark(X306))))) :|: z = 1 + (1 + X306), X306 >= 0 mark(z) -{ 2 }-> active(p(active(s(mark(X304))))) :|: z = 1 + (1 + X304), X304 >= 0 mark(z) -{ 2 }-> active(p(active(prod(mark(X1113), mark(X2102))))) :|: X2102 >= 0, X1113 >= 0, z = 1 + (1 + X1113 + X2102) mark(z) -{ 2 }-> active(p(active(p(mark(X307))))) :|: z = 1 + (1 + X307), X307 >= 0 mark(z) -{ 2 }-> active(p(active(if(mark(X1115), X2104, X335)))) :|: X1115 >= 0, z = 1 + (1 + X1115 + X2104 + X335), X2104 >= 0, X335 >= 0 mark(z) -{ 2 }-> active(p(active(fact(mark(X305))))) :|: z = 1 + (1 + X305), X305 >= 0 mark(z) -{ 2 }-> active(p(active(add(mark(X1114), mark(X2103))))) :|: X1114 >= 0, X2103 >= 0, z = 1 + (1 + X1114 + X2103) mark(z) -{ 2 }-> active(p(active(2))) :|: z = 1 + 2 mark(z) -{ 2 }-> active(p(active(1))) :|: z = 1 + 1 mark(z) -{ 2 }-> active(p(active(0))) :|: z = 1 + 0 mark(z) -{ 1 }-> active(p(0)) :|: z = 1 + X, X >= 0 mark(z) -{ 1 }-> active(p(1 + X)) :|: z = 1 + X, X >= 0 mark(z) -{ 2 }-> active(if(active(zero(mark(X295))), X2, X3)) :|: X3 >= 0, z = 1 + (1 + X295) + X2 + X3, X295 >= 0, X2 >= 0 mark(z) -{ 2 }-> active(if(active(s(mark(X291))), X2, X3)) :|: X3 >= 0, X291 >= 0, X2 >= 0, z = 1 + (1 + X291) + X2 + X3 mark(z) -{ 2 }-> active(if(active(prod(mark(X1105), mark(X290))), X2, X3)) :|: z = 1 + (1 + X1105 + X290) + X2 + X3, X1105 >= 0, X3 >= 0, X2 >= 0, X290 >= 0 mark(z) -{ 2 }-> active(if(active(p(mark(X296))), X2, X3)) :|: X296 >= 0, z = 1 + (1 + X296) + X2 + X3, X3 >= 0, X2 >= 0 mark(z) -{ 2 }-> active(if(active(if(mark(X1107), X294, X333)), X2, X3)) :|: X1107 >= 0, X294 >= 0, X333 >= 0, X3 >= 0, X2 >= 0, z = 1 + (1 + X1107 + X294 + X333) + X2 + X3 mark(z) -{ 2 }-> active(if(active(fact(mark(X293))), X2, X3)) :|: z = 1 + (1 + X293) + X2 + X3, X293 >= 0, X3 >= 0, X2 >= 0 mark(z) -{ 2 }-> active(if(active(add(mark(X1106), mark(X292))), X2, X3)) :|: X292 >= 0, z = 1 + (1 + X1106 + X292) + X2 + X3, X1106 >= 0, X3 >= 0, X2 >= 0 mark(z) -{ 2 }-> active(if(active(2), X2, X3)) :|: z = 1 + 2 + X2 + X3, X3 >= 0, X2 >= 0 mark(z) -{ 2 }-> active(if(active(1), X2, X3)) :|: z = 1 + 1 + X2 + X3, X3 >= 0, X2 >= 0 mark(z) -{ 2 }-> active(if(active(0), X2, X3)) :|: z = 1 + 0 + X2 + X3, X3 >= 0, X2 >= 0 mark(z) -{ 1 }-> active(if(0, X2, X3)) :|: X1 >= 0, X3 >= 0, z = 1 + X1 + X2 + X3, X2 >= 0 mark(z) -{ 1 }-> active(if(1 + X1, X2, X3)) :|: X1 >= 0, X3 >= 0, z = 1 + X1 + X2 + X3, X2 >= 0 mark(z) -{ 2 }-> active(fact(active(zero(mark(X202))))) :|: X202 >= 0, z = 1 + (1 + X202) mark(z) -{ 2 }-> active(fact(active(s(mark(X200))))) :|: z = 1 + (1 + X200), X200 >= 0 mark(z) -{ 2 }-> active(fact(active(prod(mark(X1100), mark(X281))))) :|: X1100 >= 0, z = 1 + (1 + X1100 + X281), X281 >= 0 mark(z) -{ 2 }-> active(fact(active(p(mark(X203))))) :|: z = 1 + (1 + X203), X203 >= 0 mark(z) -{ 2 }-> active(fact(active(if(mark(X1102), X283, X332)))) :|: X283 >= 0, X332 >= 0, z = 1 + (1 + X1102 + X283 + X332), X1102 >= 0 mark(z) -{ 2 }-> active(fact(active(fact(mark(X201))))) :|: X201 >= 0, z = 1 + (1 + X201) mark(z) -{ 2 }-> active(fact(active(add(mark(X1101), mark(X282))))) :|: X282 >= 0, z = 1 + (1 + X1101 + X282), X1101 >= 0 mark(z) -{ 2 }-> active(fact(active(2))) :|: z = 1 + 2 mark(z) -{ 2 }-> active(fact(active(1))) :|: z = 1 + 1 mark(z) -{ 2 }-> active(fact(active(0))) :|: z = 1 + 0 mark(z) -{ 1 }-> active(fact(0)) :|: z = 1 + X, X >= 0 mark(z) -{ 1 }-> active(fact(1 + X)) :|: z = 1 + X, X >= 0 mark(z) -{ 1 }-> active(add(mark(X1), mark(X2))) :|: X1 >= 0, X2 >= 0, z = 1 + X1 + X2 mark(z) -{ 1 }-> active(2) :|: z = 2 mark(z) -{ 1 }-> active(1) :|: z = 1 mark(z) -{ 1 }-> active(0) :|: z = 0 mark(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 mark(z) -{ 0 }-> 1 + x0 :|: z = x0, x0 >= 0 p(z) -{ 1 }-> p(X) :|: z = 1 + X, X >= 0 p(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 p(z) -{ 0 }-> 1 + x0 :|: z = x0, x0 >= 0 prod(z, z') -{ 1 }-> prod(X1, X2) :|: X1 >= 0, z = 1 + X1, X2 >= 0, z' = X2 prod(z, z') -{ 1 }-> prod(X1, X2) :|: X1 >= 0, z' = 1 + X2, X2 >= 0, z = X1 prod(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 prod(z, z') -{ 0 }-> 1 + x0 + x1 :|: z = x0, x0 >= 0, x1 >= 0, z' = x1 s(z) -{ 1 }-> s(X) :|: z = 1 + X, X >= 0 s(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 s(z) -{ 0 }-> 1 + x0 :|: z = x0, x0 >= 0 zero(z) -{ 1 }-> zero(X) :|: z = 1 + X, X >= 0 zero(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 zero(z) -{ 0 }-> 1 + x0 :|: z = x0, x0 >= 0 ---------------------------------------- (33) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (34) Obligation: Complexity RNTS consisting of the following rules: active(z) -{ 1 }-> mark(X) :|: Y >= 0, X >= 0, z = 1 + 2 + X + Y active(z) -{ 1 }-> mark(Y) :|: Y >= 0, z = 1 + 1 + X + Y, X >= 0 active(z) -{ 2 }-> mark(s(add(X, X284))) :|: z = 1 + (1 + X) + (1 + X284), X >= 0, X284 >= 0 active(z) -{ 2 }-> mark(s(add(X, X285))) :|: X285 >= 0, z = 1 + (1 + X) + (1 + X285), X >= 0 active(z) -{ 2 }-> mark(s(add(X1103, Y))) :|: z = 1 + (1 + (1 + X1103)) + Y, Y >= 0, X1103 >= 0 active(z) -{ 2 }-> mark(s(add(X1104, Y))) :|: X1104 >= 0, Y >= 0, z = 1 + (1 + (1 + X1104)) + Y active(z) -{ 1 }-> mark(s(0)) :|: z = 1 + (1 + X) + Y, Y >= 0, X >= 0 active(z) -{ 1 }-> mark(s(1 + X + Y)) :|: z = 1 + (1 + X) + Y, Y >= 0, X >= 0 active(z) -{ 1 }-> mark(if(zero(z - 1), s(0), prod(z - 1, fact(p(z - 1))))) :|: z - 1 >= 0 active(z) -{ 2 }-> mark(add(Y, prod(X1108, Y))) :|: z = 1 + (1 + (1 + X1108)) + Y, X1108 >= 0, Y >= 0 active(z) -{ 2 }-> mark(add(Y, prod(X1109, Y))) :|: Y >= 0, z = 1 + (1 + (1 + X1109)) + Y, X1109 >= 0 active(z) -{ 1 }-> mark(add(Y, 0)) :|: z = 1 + (1 + X) + Y, Y >= 0, X >= 0 active(z) -{ 1 }-> mark(add(Y, 1 + X + Y)) :|: z = 1 + (1 + X) + Y, Y >= 0, X >= 0 active(z) -{ 2 }-> mark(add(1 + X297, prod(X, X297))) :|: X >= 0, z = 1 + (1 + X) + (1 + X297), X297 >= 0 active(z) -{ 2 }-> mark(add(1 + X298, prod(X, X298))) :|: X >= 0, z = 1 + (1 + X) + (1 + X298), X298 >= 0 active(z) -{ 1 }-> mark(2) :|: z = 1 + 0 active(z) -{ 1 }-> mark(1) :|: z - 2 >= 0 active(z) -{ 1 }-> mark(0) :|: z - 1 >= 0 active(z) -{ 1 }-> mark(z - 2) :|: z - 2 >= 0 active(z) -{ 1 }-> mark(z - 1) :|: z - 1 >= 0 active(z) -{ 0 }-> 0 :|: z >= 0 active(z) -{ 0 }-> 1 + z :|: z >= 0 add(z, z') -{ 1 }-> add(z, z' - 1) :|: z >= 0, z' - 1 >= 0 add(z, z') -{ 1 }-> add(z - 1, z') :|: z - 1 >= 0, z' >= 0 add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 add(z, z') -{ 0 }-> 1 + z + z' :|: z >= 0, z' >= 0 encArg(z) -{ 0 }-> zero(zero(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> zero(s(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> zero(prod(encArg(x_11679), encArg(x_2558))) :|: z = 1 + (1 + x_11679 + x_2558), x_11679 >= 0, x_2558 >= 0 encArg(z) -{ 0 }-> zero(p(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> zero(mark(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> zero(if(encArg(x_11676), encArg(x_2557), encArg(x_3185))) :|: z = 1 + (1 + x_11676 + x_2557 + x_3185), x_3185 >= 0, x_2557 >= 0, x_11676 >= 0 encArg(z) -{ 0 }-> zero(fact(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> zero(add(encArg(x_11681), encArg(x_2559))) :|: z = 1 + (1 + x_11681 + x_2559), x_11681 >= 0, x_2559 >= 0 encArg(z) -{ 0 }-> zero(active(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> zero(2) :|: z = 1 + 2 encArg(z) -{ 0 }-> zero(1) :|: z = 1 + 1 encArg(z) -{ 0 }-> zero(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> zero(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> s(zero(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> s(s(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> s(prod(encArg(x_11688), encArg(x_2561))) :|: z = 1 + (1 + x_11688 + x_2561), x_11688 >= 0, x_2561 >= 0 encArg(z) -{ 0 }-> s(p(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> s(mark(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> s(if(encArg(x_11685), encArg(x_2560), encArg(x_3186))) :|: x_3186 >= 0, x_11685 >= 0, x_2560 >= 0, z = 1 + (1 + x_11685 + x_2560 + x_3186) encArg(z) -{ 0 }-> s(fact(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> s(add(encArg(x_11690), encArg(x_2562))) :|: x_2562 >= 0, x_11690 >= 0, z = 1 + (1 + x_11690 + x_2562) encArg(z) -{ 0 }-> s(active(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> s(2) :|: z = 1 + 2 encArg(z) -{ 0 }-> s(1) :|: z = 1 + 1 encArg(z) -{ 0 }-> s(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> s(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> prod(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> p(zero(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> p(s(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> p(prod(encArg(x_11823), encArg(x_2606))) :|: x_2606 >= 0, x_11823 >= 0, z = 1 + (1 + x_11823 + x_2606) encArg(z) -{ 0 }-> p(p(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> p(mark(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> p(if(encArg(x_11820), encArg(x_2605), encArg(x_3201))) :|: z = 1 + (1 + x_11820 + x_2605 + x_3201), x_2605 >= 0, x_11820 >= 0, x_3201 >= 0 encArg(z) -{ 0 }-> p(fact(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> p(add(encArg(x_11825), encArg(x_2607))) :|: z = 1 + (1 + x_11825 + x_2607), x_11825 >= 0, x_2607 >= 0 encArg(z) -{ 0 }-> p(active(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> p(2) :|: z = 1 + 2 encArg(z) -{ 0 }-> p(1) :|: z = 1 + 1 encArg(z) -{ 0 }-> p(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> p(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> mark(zero(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> mark(s(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> mark(prod(encArg(x_114), encArg(x_23))) :|: x_114 >= 0, x_23 >= 0, z = 1 + (1 + x_114 + x_23) encArg(z) -{ 0 }-> mark(p(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> mark(mark(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> mark(if(encArg(x_111), encArg(x_22), encArg(x_3''))) :|: z = 1 + (1 + x_111 + x_22 + x_3''), x_22 >= 0, x_3'' >= 0, x_111 >= 0 encArg(z) -{ 0 }-> mark(fact(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> mark(add(encArg(x_116), encArg(x_24))) :|: z = 1 + (1 + x_116 + x_24), x_116 >= 0, x_24 >= 0 encArg(z) -{ 0 }-> mark(active(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> mark(2) :|: z = 1 + 2 encArg(z) -{ 0 }-> mark(1) :|: z = 1 + 1 encArg(z) -{ 0 }-> mark(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> mark(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> if(encArg(x_1), encArg(x_2), encArg(x_3)) :|: x_1 >= 0, z = 1 + x_1 + x_2 + x_3, x_3 >= 0, x_2 >= 0 encArg(z) -{ 0 }-> fact(zero(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> fact(s(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> fact(prod(encArg(x_123), encArg(x_26))) :|: x_123 >= 0, x_26 >= 0, z = 1 + (1 + x_123 + x_26) encArg(z) -{ 0 }-> fact(p(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> fact(mark(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> fact(if(encArg(x_120), encArg(x_25), encArg(x_31))) :|: x_120 >= 0, z = 1 + (1 + x_120 + x_25 + x_31), x_25 >= 0, x_31 >= 0 encArg(z) -{ 0 }-> fact(fact(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> fact(add(encArg(x_125), encArg(x_27))) :|: x_125 >= 0, z = 1 + (1 + x_125 + x_27), x_27 >= 0 encArg(z) -{ 0 }-> fact(active(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> fact(2) :|: z = 1 + 2 encArg(z) -{ 0 }-> fact(1) :|: z = 1 + 1 encArg(z) -{ 0 }-> fact(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> fact(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> add(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> active(zero(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> active(s(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> active(prod(encArg(x_15), encArg(x_2''))) :|: x_15 >= 0, z = 1 + (1 + x_15 + x_2''), x_2'' >= 0 encArg(z) -{ 0 }-> active(p(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> active(mark(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> active(if(encArg(x_12), encArg(x_2'), encArg(x_3'))) :|: z = 1 + (1 + x_12 + x_2' + x_3'), x_3' >= 0, x_2' >= 0, x_12 >= 0 encArg(z) -{ 0 }-> active(fact(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> active(add(encArg(x_17), encArg(x_21))) :|: z = 1 + (1 + x_17 + x_21), x_17 >= 0, x_21 >= 0 encArg(z) -{ 0 }-> active(active(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> active(2) :|: z = 1 + 2 encArg(z) -{ 0 }-> active(1) :|: z = 1 + 1 encArg(z) -{ 0 }-> active(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> active(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> 2 :|: z = 2 encArg(z) -{ 0 }-> 1 :|: z = 1 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encode_0 -{ 0 }-> 0 :|: encode_active(z) -{ 0 }-> active(zero(encArg(z - 1))) :|: z - 1 >= 0 encode_active(z) -{ 0 }-> active(s(encArg(z - 1))) :|: z - 1 >= 0 encode_active(z) -{ 0 }-> active(prod(encArg(x_11958), encArg(x_2651))) :|: z = 1 + x_11958 + x_2651, x_11958 >= 0, x_2651 >= 0 encode_active(z) -{ 0 }-> active(p(encArg(z - 1))) :|: z - 1 >= 0 encode_active(z) -{ 0 }-> active(mark(encArg(z - 1))) :|: z - 1 >= 0 encode_active(z) -{ 0 }-> active(if(encArg(x_11955), encArg(x_2650), encArg(x_3216))) :|: x_3216 >= 0, z = 1 + x_11955 + x_2650 + x_3216, x_11955 >= 0, x_2650 >= 0 encode_active(z) -{ 0 }-> active(fact(encArg(z - 1))) :|: z - 1 >= 0 encode_active(z) -{ 0 }-> active(add(encArg(x_11960), encArg(x_2652))) :|: x_11960 >= 0, z = 1 + x_11960 + x_2652, x_2652 >= 0 encode_active(z) -{ 0 }-> active(active(encArg(z - 1))) :|: z - 1 >= 0 encode_active(z) -{ 0 }-> active(2) :|: z = 2 encode_active(z) -{ 0 }-> active(1) :|: z = 1 encode_active(z) -{ 0 }-> active(0) :|: z = 0 encode_active(z) -{ 0 }-> active(0) :|: z >= 0 encode_active(z) -{ 0 }-> 0 :|: z >= 0 encode_add(z, z') -{ 0 }-> add(encArg(z), encArg(z')) :|: z >= 0, z' >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_fact(z) -{ 0 }-> fact(zero(encArg(z - 1))) :|: z - 1 >= 0 encode_fact(z) -{ 0 }-> fact(s(encArg(z - 1))) :|: z - 1 >= 0 encode_fact(z) -{ 0 }-> fact(prod(encArg(x_11967), encArg(x_2654))) :|: z = 1 + x_11967 + x_2654, x_2654 >= 0, x_11967 >= 0 encode_fact(z) -{ 0 }-> fact(p(encArg(z - 1))) :|: z - 1 >= 0 encode_fact(z) -{ 0 }-> fact(mark(encArg(z - 1))) :|: z - 1 >= 0 encode_fact(z) -{ 0 }-> fact(if(encArg(x_11964), encArg(x_2653), encArg(x_3217))) :|: z = 1 + x_11964 + x_2653 + x_3217, x_3217 >= 0, x_2653 >= 0, x_11964 >= 0 encode_fact(z) -{ 0 }-> fact(fact(encArg(z - 1))) :|: z - 1 >= 0 encode_fact(z) -{ 0 }-> fact(add(encArg(x_11969), encArg(x_2655))) :|: z = 1 + x_11969 + x_2655, x_2655 >= 0, x_11969 >= 0 encode_fact(z) -{ 0 }-> fact(active(encArg(z - 1))) :|: z - 1 >= 0 encode_fact(z) -{ 0 }-> fact(2) :|: z = 2 encode_fact(z) -{ 0 }-> fact(1) :|: z = 1 encode_fact(z) -{ 0 }-> fact(0) :|: z = 0 encode_fact(z) -{ 0 }-> fact(0) :|: z >= 0 encode_fact(z) -{ 0 }-> 0 :|: z >= 0 encode_false -{ 0 }-> 1 :|: encode_false -{ 0 }-> 0 :|: encode_if(z, z', z'') -{ 0 }-> if(encArg(z), encArg(z'), encArg(z'')) :|: z >= 0, z'' >= 0, z' >= 0 encode_if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 encode_mark(z) -{ 0 }-> mark(zero(encArg(z - 1))) :|: z - 1 >= 0 encode_mark(z) -{ 0 }-> mark(s(encArg(z - 1))) :|: z - 1 >= 0 encode_mark(z) -{ 0 }-> mark(prod(encArg(x_11976), encArg(x_2657))) :|: z = 1 + x_11976 + x_2657, x_11976 >= 0, x_2657 >= 0 encode_mark(z) -{ 0 }-> mark(p(encArg(z - 1))) :|: z - 1 >= 0 encode_mark(z) -{ 0 }-> mark(mark(encArg(z - 1))) :|: z - 1 >= 0 encode_mark(z) -{ 0 }-> mark(if(encArg(x_11973), encArg(x_2656), encArg(x_3218))) :|: z = 1 + x_11973 + x_2656 + x_3218, x_2656 >= 0, x_11973 >= 0, x_3218 >= 0 encode_mark(z) -{ 0 }-> mark(fact(encArg(z - 1))) :|: z - 1 >= 0 encode_mark(z) -{ 0 }-> mark(add(encArg(x_11978), encArg(x_2658))) :|: x_11978 >= 0, z = 1 + x_11978 + x_2658, x_2658 >= 0 encode_mark(z) -{ 0 }-> mark(active(encArg(z - 1))) :|: z - 1 >= 0 encode_mark(z) -{ 0 }-> mark(2) :|: z = 2 encode_mark(z) -{ 0 }-> mark(1) :|: z = 1 encode_mark(z) -{ 0 }-> mark(0) :|: z = 0 encode_mark(z) -{ 0 }-> mark(0) :|: z >= 0 encode_mark(z) -{ 0 }-> 0 :|: z >= 0 encode_p(z) -{ 0 }-> p(zero(encArg(z - 1))) :|: z - 1 >= 0 encode_p(z) -{ 0 }-> p(s(encArg(z - 1))) :|: z - 1 >= 0 encode_p(z) -{ 0 }-> p(prod(encArg(x_13776), encArg(x_21257))) :|: x_13776 >= 0, z = 1 + x_13776 + x_21257, x_21257 >= 0 encode_p(z) -{ 0 }-> p(p(encArg(z - 1))) :|: z - 1 >= 0 encode_p(z) -{ 0 }-> p(mark(encArg(z - 1))) :|: z - 1 >= 0 encode_p(z) -{ 0 }-> p(if(encArg(x_13773), encArg(x_21256), encArg(x_3418))) :|: z = 1 + x_13773 + x_21256 + x_3418, x_21256 >= 0, x_3418 >= 0, x_13773 >= 0 encode_p(z) -{ 0 }-> p(fact(encArg(z - 1))) :|: z - 1 >= 0 encode_p(z) -{ 0 }-> p(add(encArg(x_13778), encArg(x_21258))) :|: z = 1 + x_13778 + x_21258, x_13778 >= 0, x_21258 >= 0 encode_p(z) -{ 0 }-> p(active(encArg(z - 1))) :|: z - 1 >= 0 encode_p(z) -{ 0 }-> p(2) :|: z = 2 encode_p(z) -{ 0 }-> p(1) :|: z = 1 encode_p(z) -{ 0 }-> p(0) :|: z = 0 encode_p(z) -{ 0 }-> p(0) :|: z >= 0 encode_p(z) -{ 0 }-> 0 :|: z >= 0 encode_prod(z, z') -{ 0 }-> prod(encArg(z), encArg(z')) :|: z >= 0, z' >= 0 encode_prod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_s(z) -{ 0 }-> s(zero(encArg(z - 1))) :|: z - 1 >= 0 encode_s(z) -{ 0 }-> s(s(encArg(z - 1))) :|: z - 1 >= 0 encode_s(z) -{ 0 }-> s(prod(encArg(x_13641), encArg(x_21212))) :|: x_21212 >= 0, x_13641 >= 0, z = 1 + x_13641 + x_21212 encode_s(z) -{ 0 }-> s(p(encArg(z - 1))) :|: z - 1 >= 0 encode_s(z) -{ 0 }-> s(mark(encArg(z - 1))) :|: z - 1 >= 0 encode_s(z) -{ 0 }-> s(if(encArg(x_13638), encArg(x_21211), encArg(x_3403))) :|: z = 1 + x_13638 + x_21211 + x_3403, x_3403 >= 0, x_13638 >= 0, x_21211 >= 0 encode_s(z) -{ 0 }-> s(fact(encArg(z - 1))) :|: z - 1 >= 0 encode_s(z) -{ 0 }-> s(add(encArg(x_13643), encArg(x_21213))) :|: x_21213 >= 0, z = 1 + x_13643 + x_21213, x_13643 >= 0 encode_s(z) -{ 0 }-> s(active(encArg(z - 1))) :|: z - 1 >= 0 encode_s(z) -{ 0 }-> s(2) :|: z = 2 encode_s(z) -{ 0 }-> s(1) :|: z = 1 encode_s(z) -{ 0 }-> s(0) :|: z = 0 encode_s(z) -{ 0 }-> s(0) :|: z >= 0 encode_s(z) -{ 0 }-> 0 :|: z >= 0 encode_true -{ 0 }-> 2 :|: encode_true -{ 0 }-> 0 :|: encode_zero(z) -{ 0 }-> zero(zero(encArg(z - 1))) :|: z - 1 >= 0 encode_zero(z) -{ 0 }-> zero(s(encArg(z - 1))) :|: z - 1 >= 0 encode_zero(z) -{ 0 }-> zero(prod(encArg(x_13632), encArg(x_21209))) :|: x_21209 >= 0, x_13632 >= 0, z = 1 + x_13632 + x_21209 encode_zero(z) -{ 0 }-> zero(p(encArg(z - 1))) :|: z - 1 >= 0 encode_zero(z) -{ 0 }-> zero(mark(encArg(z - 1))) :|: z - 1 >= 0 encode_zero(z) -{ 0 }-> zero(if(encArg(x_13629), encArg(x_21208), encArg(x_3402))) :|: x_13629 >= 0, x_3402 >= 0, z = 1 + x_13629 + x_21208 + x_3402, x_21208 >= 0 encode_zero(z) -{ 0 }-> zero(fact(encArg(z - 1))) :|: z - 1 >= 0 encode_zero(z) -{ 0 }-> zero(add(encArg(x_13634), encArg(x_21210))) :|: z = 1 + x_13634 + x_21210, x_13634 >= 0, x_21210 >= 0 encode_zero(z) -{ 0 }-> zero(active(encArg(z - 1))) :|: z - 1 >= 0 encode_zero(z) -{ 0 }-> zero(2) :|: z = 2 encode_zero(z) -{ 0 }-> zero(1) :|: z = 1 encode_zero(z) -{ 0 }-> zero(0) :|: z = 0 encode_zero(z) -{ 0 }-> zero(0) :|: z >= 0 encode_zero(z) -{ 0 }-> 0 :|: z >= 0 fact(z) -{ 1 }-> fact(z - 1) :|: z - 1 >= 0 fact(z) -{ 0 }-> 0 :|: z >= 0 fact(z) -{ 0 }-> 1 + z :|: z >= 0 if(z, z', z'') -{ 1 }-> if(z, z', z'' - 1) :|: z >= 0, z'' - 1 >= 0, z' >= 0 if(z, z', z'') -{ 1 }-> if(z, z' - 1, z'') :|: z >= 0, z'' >= 0, z' - 1 >= 0 if(z, z', z'') -{ 1 }-> if(z - 1, z', z'') :|: z - 1 >= 0, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if(z, z', z'') -{ 0 }-> 1 + z + z' + z'' :|: z >= 0, z' >= 0, z'' >= 0 mark(z) -{ 2 }-> active(zero(active(zero(mark(z - 2))))) :|: z - 2 >= 0 mark(z) -{ 2 }-> active(zero(active(s(mark(z - 2))))) :|: z - 2 >= 0 mark(z) -{ 2 }-> active(zero(active(prod(mark(X1110), mark(X299))))) :|: X1110 >= 0, X299 >= 0, z = 1 + (1 + X1110 + X299) mark(z) -{ 2 }-> active(zero(active(p(mark(z - 2))))) :|: z - 2 >= 0 mark(z) -{ 2 }-> active(zero(active(if(mark(X1112), X2101, X334)))) :|: z = 1 + (1 + X1112 + X2101 + X334), X2101 >= 0, X334 >= 0, X1112 >= 0 mark(z) -{ 2 }-> active(zero(active(fact(mark(z - 2))))) :|: z - 2 >= 0 mark(z) -{ 2 }-> active(zero(active(add(mark(X1111), mark(X2100))))) :|: X1111 >= 0, z = 1 + (1 + X1111 + X2100), X2100 >= 0 mark(z) -{ 2 }-> active(zero(active(2))) :|: z = 1 + 2 mark(z) -{ 2 }-> active(zero(active(1))) :|: z = 1 + 1 mark(z) -{ 2 }-> active(zero(active(0))) :|: z = 1 + 0 mark(z) -{ 1 }-> active(zero(0)) :|: z - 1 >= 0 mark(z) -{ 1 }-> active(zero(1 + (z - 1))) :|: z - 1 >= 0 mark(z) -{ 2 }-> active(s(active(zero(mark(z - 2))))) :|: z - 2 >= 0 mark(z) -{ 2 }-> active(s(active(s(mark(z - 2))))) :|: z - 2 >= 0 mark(z) -{ 2 }-> active(s(active(prod(mark(X140), mark(X239))))) :|: z = 1 + (1 + X140 + X239), X239 >= 0, X140 >= 0 mark(z) -{ 2 }-> active(s(active(p(mark(z - 2))))) :|: z - 2 >= 0 mark(z) -{ 2 }-> active(s(active(if(mark(X142), X241, X318)))) :|: z = 1 + (1 + X142 + X241 + X318), X318 >= 0, X241 >= 0, X142 >= 0 mark(z) -{ 2 }-> active(s(active(fact(mark(z - 2))))) :|: z - 2 >= 0 mark(z) -{ 2 }-> active(s(active(add(mark(X141), mark(X240))))) :|: X240 >= 0, z = 1 + (1 + X141 + X240), X141 >= 0 mark(z) -{ 2 }-> active(s(active(2))) :|: z = 1 + 2 mark(z) -{ 2 }-> active(s(active(1))) :|: z = 1 + 1 mark(z) -{ 2 }-> active(s(active(0))) :|: z = 1 + 0 mark(z) -{ 1 }-> active(s(0)) :|: z - 1 >= 0 mark(z) -{ 1 }-> active(s(1 + (z - 1))) :|: z - 1 >= 0 mark(z) -{ 1 }-> active(prod(mark(X1), mark(X2))) :|: X1 >= 0, X2 >= 0, z = 1 + X1 + X2 mark(z) -{ 2 }-> active(p(active(zero(mark(z - 2))))) :|: z - 2 >= 0 mark(z) -{ 2 }-> active(p(active(s(mark(z - 2))))) :|: z - 2 >= 0 mark(z) -{ 2 }-> active(p(active(prod(mark(X1113), mark(X2102))))) :|: X2102 >= 0, X1113 >= 0, z = 1 + (1 + X1113 + X2102) mark(z) -{ 2 }-> active(p(active(p(mark(z - 2))))) :|: z - 2 >= 0 mark(z) -{ 2 }-> active(p(active(if(mark(X1115), X2104, X335)))) :|: X1115 >= 0, z = 1 + (1 + X1115 + X2104 + X335), X2104 >= 0, X335 >= 0 mark(z) -{ 2 }-> active(p(active(fact(mark(z - 2))))) :|: z - 2 >= 0 mark(z) -{ 2 }-> active(p(active(add(mark(X1114), mark(X2103))))) :|: X1114 >= 0, X2103 >= 0, z = 1 + (1 + X1114 + X2103) mark(z) -{ 2 }-> active(p(active(2))) :|: z = 1 + 2 mark(z) -{ 2 }-> active(p(active(1))) :|: z = 1 + 1 mark(z) -{ 2 }-> active(p(active(0))) :|: z = 1 + 0 mark(z) -{ 1 }-> active(p(0)) :|: z - 1 >= 0 mark(z) -{ 1 }-> active(p(1 + (z - 1))) :|: z - 1 >= 0 mark(z) -{ 2 }-> active(if(active(zero(mark(X295))), X2, X3)) :|: X3 >= 0, z = 1 + (1 + X295) + X2 + X3, X295 >= 0, X2 >= 0 mark(z) -{ 2 }-> active(if(active(s(mark(X291))), X2, X3)) :|: X3 >= 0, X291 >= 0, X2 >= 0, z = 1 + (1 + X291) + X2 + X3 mark(z) -{ 2 }-> active(if(active(prod(mark(X1105), mark(X290))), X2, X3)) :|: z = 1 + (1 + X1105 + X290) + X2 + X3, X1105 >= 0, X3 >= 0, X2 >= 0, X290 >= 0 mark(z) -{ 2 }-> active(if(active(p(mark(X296))), X2, X3)) :|: X296 >= 0, z = 1 + (1 + X296) + X2 + X3, X3 >= 0, X2 >= 0 mark(z) -{ 2 }-> active(if(active(if(mark(X1107), X294, X333)), X2, X3)) :|: X1107 >= 0, X294 >= 0, X333 >= 0, X3 >= 0, X2 >= 0, z = 1 + (1 + X1107 + X294 + X333) + X2 + X3 mark(z) -{ 2 }-> active(if(active(fact(mark(X293))), X2, X3)) :|: z = 1 + (1 + X293) + X2 + X3, X293 >= 0, X3 >= 0, X2 >= 0 mark(z) -{ 2 }-> active(if(active(add(mark(X1106), mark(X292))), X2, X3)) :|: X292 >= 0, z = 1 + (1 + X1106 + X292) + X2 + X3, X1106 >= 0, X3 >= 0, X2 >= 0 mark(z) -{ 2 }-> active(if(active(2), X2, X3)) :|: z = 1 + 2 + X2 + X3, X3 >= 0, X2 >= 0 mark(z) -{ 2 }-> active(if(active(1), X2, X3)) :|: z = 1 + 1 + X2 + X3, X3 >= 0, X2 >= 0 mark(z) -{ 2 }-> active(if(active(0), X2, X3)) :|: z = 1 + 0 + X2 + X3, X3 >= 0, X2 >= 0 mark(z) -{ 1 }-> active(if(0, X2, X3)) :|: X1 >= 0, X3 >= 0, z = 1 + X1 + X2 + X3, X2 >= 0 mark(z) -{ 1 }-> active(if(1 + X1, X2, X3)) :|: X1 >= 0, X3 >= 0, z = 1 + X1 + X2 + X3, X2 >= 0 mark(z) -{ 2 }-> active(fact(active(zero(mark(z - 2))))) :|: z - 2 >= 0 mark(z) -{ 2 }-> active(fact(active(s(mark(z - 2))))) :|: z - 2 >= 0 mark(z) -{ 2 }-> active(fact(active(prod(mark(X1100), mark(X281))))) :|: X1100 >= 0, z = 1 + (1 + X1100 + X281), X281 >= 0 mark(z) -{ 2 }-> active(fact(active(p(mark(z - 2))))) :|: z - 2 >= 0 mark(z) -{ 2 }-> active(fact(active(if(mark(X1102), X283, X332)))) :|: X283 >= 0, X332 >= 0, z = 1 + (1 + X1102 + X283 + X332), X1102 >= 0 mark(z) -{ 2 }-> active(fact(active(fact(mark(z - 2))))) :|: z - 2 >= 0 mark(z) -{ 2 }-> active(fact(active(add(mark(X1101), mark(X282))))) :|: X282 >= 0, z = 1 + (1 + X1101 + X282), X1101 >= 0 mark(z) -{ 2 }-> active(fact(active(2))) :|: z = 1 + 2 mark(z) -{ 2 }-> active(fact(active(1))) :|: z = 1 + 1 mark(z) -{ 2 }-> active(fact(active(0))) :|: z = 1 + 0 mark(z) -{ 1 }-> active(fact(0)) :|: z - 1 >= 0 mark(z) -{ 1 }-> active(fact(1 + (z - 1))) :|: z - 1 >= 0 mark(z) -{ 1 }-> active(add(mark(X1), mark(X2))) :|: X1 >= 0, X2 >= 0, z = 1 + X1 + X2 mark(z) -{ 1 }-> active(2) :|: z = 2 mark(z) -{ 1 }-> active(1) :|: z = 1 mark(z) -{ 1 }-> active(0) :|: z = 0 mark(z) -{ 0 }-> 0 :|: z >= 0 mark(z) -{ 0 }-> 1 + z :|: z >= 0 p(z) -{ 1 }-> p(z - 1) :|: z - 1 >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> 1 + z :|: z >= 0 prod(z, z') -{ 1 }-> prod(z, z' - 1) :|: z >= 0, z' - 1 >= 0 prod(z, z') -{ 1 }-> prod(z - 1, z') :|: z - 1 >= 0, z' >= 0 prod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 prod(z, z') -{ 0 }-> 1 + z + z' :|: z >= 0, z' >= 0 s(z) -{ 1 }-> s(z - 1) :|: z - 1 >= 0 s(z) -{ 0 }-> 0 :|: z >= 0 s(z) -{ 0 }-> 1 + z :|: z >= 0 zero(z) -{ 1 }-> zero(z - 1) :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 zero(z) -{ 0 }-> 1 + z :|: z >= 0 ---------------------------------------- (35) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS to CDT ---------------------------------------- (36) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) encode_active(z0) -> active(encArg(z0)) encode_fact(z0) -> fact(encArg(z0)) encode_mark(z0) -> mark(encArg(z0)) encode_if(z0, z1, z2) -> if(encArg(z0), encArg(z1), encArg(z2)) encode_zero(z0) -> zero(encArg(z0)) encode_s(z0) -> s(encArg(z0)) encode_0 -> 0 encode_prod(z0, z1) -> prod(encArg(z0), encArg(z1)) encode_p(z0) -> p(encArg(z0)) encode_add(z0, z1) -> add(encArg(z0), encArg(z1)) encode_true -> true encode_false -> false active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ENCARG(0) -> c ENCARG(true) -> c1 ENCARG(false) -> c2 ENCARG(cons_active(z0)) -> c3(ACTIVE(encArg(z0)), ENCARG(z0)) ENCARG(cons_mark(z0)) -> c4(MARK(encArg(z0)), ENCARG(z0)) ENCARG(cons_fact(z0)) -> c5(FACT(encArg(z0)), ENCARG(z0)) ENCARG(cons_if(z0, z1, z2)) -> c6(IF(encArg(z0), encArg(z1), encArg(z2)), ENCARG(z0), ENCARG(z1), ENCARG(z2)) ENCARG(cons_zero(z0)) -> c7(ZERO(encArg(z0)), ENCARG(z0)) ENCARG(cons_s(z0)) -> c8(S(encArg(z0)), ENCARG(z0)) ENCARG(cons_prod(z0, z1)) -> c9(PROD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_p(z0)) -> c10(P(encArg(z0)), ENCARG(z0)) ENCARG(cons_add(z0, z1)) -> c11(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCODE_ACTIVE(z0) -> c12(ACTIVE(encArg(z0)), ENCARG(z0)) ENCODE_FACT(z0) -> c13(FACT(encArg(z0)), ENCARG(z0)) ENCODE_MARK(z0) -> c14(MARK(encArg(z0)), ENCARG(z0)) ENCODE_IF(z0, z1, z2) -> c15(IF(encArg(z0), encArg(z1), encArg(z2)), ENCARG(z0), ENCARG(z1), ENCARG(z2)) ENCODE_ZERO(z0) -> c16(ZERO(encArg(z0)), ENCARG(z0)) ENCODE_S(z0) -> c17(S(encArg(z0)), ENCARG(z0)) ENCODE_0 -> c18 ENCODE_PROD(z0, z1) -> c19(PROD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCODE_P(z0) -> c20(P(encArg(z0)), ENCARG(z0)) ENCODE_ADD(z0, z1) -> c21(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCODE_TRUE -> c22 ENCODE_FALSE -> c23 ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), IF(zero(z0), s(0), prod(z0, fact(p(z0)))), ZERO(z0), S(0), PROD(z0, fact(p(z0))), FACT(p(z0)), P(z0)) ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), S(add(z0, z1)), ADD(z0, z1)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), ADD(z1, prod(z0, z1)), PROD(z0, z1)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(0) -> c38(ACTIVE(0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(true) -> c42(ACTIVE(true)) MARK(false) -> c43(ACTIVE(false)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) S tuples: ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), IF(zero(z0), s(0), prod(z0, fact(p(z0)))), ZERO(z0), S(0), PROD(z0, fact(p(z0))), FACT(p(z0)), P(z0)) ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), S(add(z0, z1)), ADD(z0, z1)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), ADD(z1, prod(z0, z1)), PROD(z0, z1)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(0) -> c38(ACTIVE(0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(true) -> c42(ACTIVE(true)) MARK(false) -> c43(ACTIVE(false)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) K tuples:none Defined Rule Symbols: active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2, encArg_1, encode_active_1, encode_fact_1, encode_mark_1, encode_if_3, encode_zero_1, encode_s_1, encode_0, encode_prod_2, encode_p_1, encode_add_2, encode_true, encode_false Defined Pair Symbols: ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_0, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2, ENCODE_TRUE, ENCODE_FALSE, ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2 Compound Symbols: c, c1, c2, c3_2, c4_2, c5_2, c6_4, c7_2, c8_2, c9_3, c10_2, c11_3, c12_2, c13_2, c14_2, c15_4, c16_2, c17_2, c18, c19_3, c20_2, c21_3, c22, c23, c24_7, c25_1, c26_3, c27_1, c28_3, c29_1, c30_1, c31_1, c32_1, c33_1, c34_3, c35_3, c36_3, c37_3, c38_1, c39_4, c40_3, c41_4, c42_1, c43_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1 ---------------------------------------- (37) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 6 trailing nodes: ENCARG(true) -> c1 ENCODE_TRUE -> c22 ENCARG(false) -> c2 ENCODE_FALSE -> c23 ENCARG(0) -> c ENCODE_0 -> c18 ---------------------------------------- (38) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) encode_active(z0) -> active(encArg(z0)) encode_fact(z0) -> fact(encArg(z0)) encode_mark(z0) -> mark(encArg(z0)) encode_if(z0, z1, z2) -> if(encArg(z0), encArg(z1), encArg(z2)) encode_zero(z0) -> zero(encArg(z0)) encode_s(z0) -> s(encArg(z0)) encode_0 -> 0 encode_prod(z0, z1) -> prod(encArg(z0), encArg(z1)) encode_p(z0) -> p(encArg(z0)) encode_add(z0, z1) -> add(encArg(z0), encArg(z1)) encode_true -> true encode_false -> false active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ENCARG(cons_active(z0)) -> c3(ACTIVE(encArg(z0)), ENCARG(z0)) ENCARG(cons_mark(z0)) -> c4(MARK(encArg(z0)), ENCARG(z0)) ENCARG(cons_fact(z0)) -> c5(FACT(encArg(z0)), ENCARG(z0)) ENCARG(cons_if(z0, z1, z2)) -> c6(IF(encArg(z0), encArg(z1), encArg(z2)), ENCARG(z0), ENCARG(z1), ENCARG(z2)) ENCARG(cons_zero(z0)) -> c7(ZERO(encArg(z0)), ENCARG(z0)) ENCARG(cons_s(z0)) -> c8(S(encArg(z0)), ENCARG(z0)) ENCARG(cons_prod(z0, z1)) -> c9(PROD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_p(z0)) -> c10(P(encArg(z0)), ENCARG(z0)) ENCARG(cons_add(z0, z1)) -> c11(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCODE_ACTIVE(z0) -> c12(ACTIVE(encArg(z0)), ENCARG(z0)) ENCODE_FACT(z0) -> c13(FACT(encArg(z0)), ENCARG(z0)) ENCODE_MARK(z0) -> c14(MARK(encArg(z0)), ENCARG(z0)) ENCODE_IF(z0, z1, z2) -> c15(IF(encArg(z0), encArg(z1), encArg(z2)), ENCARG(z0), ENCARG(z1), ENCARG(z2)) ENCODE_ZERO(z0) -> c16(ZERO(encArg(z0)), ENCARG(z0)) ENCODE_S(z0) -> c17(S(encArg(z0)), ENCARG(z0)) ENCODE_PROD(z0, z1) -> c19(PROD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCODE_P(z0) -> c20(P(encArg(z0)), ENCARG(z0)) ENCODE_ADD(z0, z1) -> c21(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), IF(zero(z0), s(0), prod(z0, fact(p(z0)))), ZERO(z0), S(0), PROD(z0, fact(p(z0))), FACT(p(z0)), P(z0)) ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), S(add(z0, z1)), ADD(z0, z1)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), ADD(z1, prod(z0, z1)), PROD(z0, z1)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(0) -> c38(ACTIVE(0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(true) -> c42(ACTIVE(true)) MARK(false) -> c43(ACTIVE(false)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) S tuples: ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), IF(zero(z0), s(0), prod(z0, fact(p(z0)))), ZERO(z0), S(0), PROD(z0, fact(p(z0))), FACT(p(z0)), P(z0)) ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), S(add(z0, z1)), ADD(z0, z1)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), ADD(z1, prod(z0, z1)), PROD(z0, z1)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(0) -> c38(ACTIVE(0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(true) -> c42(ACTIVE(true)) MARK(false) -> c43(ACTIVE(false)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) K tuples:none Defined Rule Symbols: active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2, encArg_1, encode_active_1, encode_fact_1, encode_mark_1, encode_if_3, encode_zero_1, encode_s_1, encode_0, encode_prod_2, encode_p_1, encode_add_2, encode_true, encode_false Defined Pair Symbols: ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2, ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2 Compound Symbols: c3_2, c4_2, c5_2, c6_4, c7_2, c8_2, c9_3, c10_2, c11_3, c12_2, c13_2, c14_2, c15_4, c16_2, c17_2, c19_3, c20_2, c21_3, c24_7, c25_1, c26_3, c27_1, c28_3, c29_1, c30_1, c31_1, c32_1, c33_1, c34_3, c35_3, c36_3, c37_3, c38_1, c39_4, c40_3, c41_4, c42_1, c43_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1 ---------------------------------------- (39) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 9 trailing tuple parts ---------------------------------------- (40) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) encode_active(z0) -> active(encArg(z0)) encode_fact(z0) -> fact(encArg(z0)) encode_mark(z0) -> mark(encArg(z0)) encode_if(z0, z1, z2) -> if(encArg(z0), encArg(z1), encArg(z2)) encode_zero(z0) -> zero(encArg(z0)) encode_s(z0) -> s(encArg(z0)) encode_0 -> 0 encode_prod(z0, z1) -> prod(encArg(z0), encArg(z1)) encode_p(z0) -> p(encArg(z0)) encode_add(z0, z1) -> add(encArg(z0), encArg(z1)) encode_true -> true encode_false -> false active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ENCARG(cons_active(z0)) -> c3(ACTIVE(encArg(z0)), ENCARG(z0)) ENCARG(cons_mark(z0)) -> c4(MARK(encArg(z0)), ENCARG(z0)) ENCARG(cons_fact(z0)) -> c5(FACT(encArg(z0)), ENCARG(z0)) ENCARG(cons_if(z0, z1, z2)) -> c6(IF(encArg(z0), encArg(z1), encArg(z2)), ENCARG(z0), ENCARG(z1), ENCARG(z2)) ENCARG(cons_zero(z0)) -> c7(ZERO(encArg(z0)), ENCARG(z0)) ENCARG(cons_s(z0)) -> c8(S(encArg(z0)), ENCARG(z0)) ENCARG(cons_prod(z0, z1)) -> c9(PROD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_p(z0)) -> c10(P(encArg(z0)), ENCARG(z0)) ENCARG(cons_add(z0, z1)) -> c11(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCODE_ACTIVE(z0) -> c12(ACTIVE(encArg(z0)), ENCARG(z0)) ENCODE_FACT(z0) -> c13(FACT(encArg(z0)), ENCARG(z0)) ENCODE_MARK(z0) -> c14(MARK(encArg(z0)), ENCARG(z0)) ENCODE_IF(z0, z1, z2) -> c15(IF(encArg(z0), encArg(z1), encArg(z2)), ENCARG(z0), ENCARG(z1), ENCARG(z2)) ENCODE_ZERO(z0) -> c16(ZERO(encArg(z0)), ENCARG(z0)) ENCODE_S(z0) -> c17(S(encArg(z0)), ENCARG(z0)) ENCODE_PROD(z0, z1) -> c19(PROD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCODE_P(z0) -> c20(P(encArg(z0)), ENCARG(z0)) ENCODE_ADD(z0, z1) -> c21(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 K tuples:none Defined Rule Symbols: active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2, encArg_1, encode_active_1, encode_fact_1, encode_mark_1, encode_if_3, encode_zero_1, encode_s_1, encode_0, encode_prod_2, encode_p_1, encode_add_2, encode_true, encode_false Defined Pair Symbols: ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2, ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2 Compound Symbols: c3_2, c4_2, c5_2, c6_4, c7_2, c8_2, c9_3, c10_2, c11_3, c12_2, c13_2, c14_2, c15_4, c16_2, c17_2, c19_3, c20_2, c21_3, c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_3, c35_3, c36_3, c37_3, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43 ---------------------------------------- (41) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (42) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) encode_active(z0) -> active(encArg(z0)) encode_fact(z0) -> fact(encArg(z0)) encode_mark(z0) -> mark(encArg(z0)) encode_if(z0, z1, z2) -> if(encArg(z0), encArg(z1), encArg(z2)) encode_zero(z0) -> zero(encArg(z0)) encode_s(z0) -> s(encArg(z0)) encode_0 -> 0 encode_prod(z0, z1) -> prod(encArg(z0), encArg(z1)) encode_p(z0) -> p(encArg(z0)) encode_add(z0, z1) -> add(encArg(z0), encArg(z1)) encode_true -> true encode_false -> false active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ENCARG(cons_active(z0)) -> c3(ACTIVE(encArg(z0)), ENCARG(z0)) ENCARG(cons_mark(z0)) -> c4(MARK(encArg(z0)), ENCARG(z0)) ENCARG(cons_fact(z0)) -> c5(FACT(encArg(z0)), ENCARG(z0)) ENCARG(cons_if(z0, z1, z2)) -> c6(IF(encArg(z0), encArg(z1), encArg(z2)), ENCARG(z0), ENCARG(z1), ENCARG(z2)) ENCARG(cons_zero(z0)) -> c7(ZERO(encArg(z0)), ENCARG(z0)) ENCARG(cons_s(z0)) -> c8(S(encArg(z0)), ENCARG(z0)) ENCARG(cons_prod(z0, z1)) -> c9(PROD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_p(z0)) -> c10(P(encArg(z0)), ENCARG(z0)) ENCARG(cons_add(z0, z1)) -> c11(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_ACTIVE(z0) -> c(ENCARG(z0)) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_FACT(z0) -> c(ENCARG(z0)) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_MARK(z0) -> c(ENCARG(z0)) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_IF(z0, z1, z2) -> c(ENCARG(z0)) ENCODE_IF(z0, z1, z2) -> c(ENCARG(z1)) ENCODE_IF(z0, z1, z2) -> c(ENCARG(z2)) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_ZERO(z0) -> c(ENCARG(z0)) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_S(z0) -> c(ENCARG(z0)) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_PROD(z0, z1) -> c(ENCARG(z0)) ENCODE_PROD(z0, z1) -> c(ENCARG(z1)) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_P(z0) -> c(ENCARG(z0)) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCODE_ADD(z0, z1) -> c(ENCARG(z0)) ENCODE_ADD(z0, z1) -> c(ENCARG(z1)) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 K tuples:none Defined Rule Symbols: active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2, encArg_1, encode_active_1, encode_fact_1, encode_mark_1, encode_if_3, encode_zero_1, encode_s_1, encode_0, encode_prod_2, encode_p_1, encode_add_2, encode_true, encode_false Defined Pair Symbols: ENCARG_1, ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c3_2, c4_2, c5_2, c6_4, c7_2, c8_2, c9_3, c10_2, c11_3, c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_3, c35_3, c36_3, c37_3, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1 ---------------------------------------- (43) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 13 leading nodes: ENCODE_ACTIVE(z0) -> c(ENCARG(z0)) ENCODE_FACT(z0) -> c(ENCARG(z0)) ENCODE_MARK(z0) -> c(ENCARG(z0)) ENCODE_IF(z0, z1, z2) -> c(ENCARG(z0)) ENCODE_IF(z0, z1, z2) -> c(ENCARG(z1)) ENCODE_IF(z0, z1, z2) -> c(ENCARG(z2)) ENCODE_ZERO(z0) -> c(ENCARG(z0)) ENCODE_S(z0) -> c(ENCARG(z0)) ENCODE_PROD(z0, z1) -> c(ENCARG(z0)) ENCODE_PROD(z0, z1) -> c(ENCARG(z1)) ENCODE_P(z0) -> c(ENCARG(z0)) ENCODE_ADD(z0, z1) -> c(ENCARG(z0)) ENCODE_ADD(z0, z1) -> c(ENCARG(z1)) ---------------------------------------- (44) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) encode_active(z0) -> active(encArg(z0)) encode_fact(z0) -> fact(encArg(z0)) encode_mark(z0) -> mark(encArg(z0)) encode_if(z0, z1, z2) -> if(encArg(z0), encArg(z1), encArg(z2)) encode_zero(z0) -> zero(encArg(z0)) encode_s(z0) -> s(encArg(z0)) encode_0 -> 0 encode_prod(z0, z1) -> prod(encArg(z0), encArg(z1)) encode_p(z0) -> p(encArg(z0)) encode_add(z0, z1) -> add(encArg(z0), encArg(z1)) encode_true -> true encode_false -> false active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ENCARG(cons_active(z0)) -> c3(ACTIVE(encArg(z0)), ENCARG(z0)) ENCARG(cons_mark(z0)) -> c4(MARK(encArg(z0)), ENCARG(z0)) ENCARG(cons_fact(z0)) -> c5(FACT(encArg(z0)), ENCARG(z0)) ENCARG(cons_if(z0, z1, z2)) -> c6(IF(encArg(z0), encArg(z1), encArg(z2)), ENCARG(z0), ENCARG(z1), ENCARG(z2)) ENCARG(cons_zero(z0)) -> c7(ZERO(encArg(z0)), ENCARG(z0)) ENCARG(cons_s(z0)) -> c8(S(encArg(z0)), ENCARG(z0)) ENCARG(cons_prod(z0, z1)) -> c9(PROD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_p(z0)) -> c10(P(encArg(z0)), ENCARG(z0)) ENCARG(cons_add(z0, z1)) -> c11(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 K tuples:none Defined Rule Symbols: active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2, encArg_1, encode_active_1, encode_fact_1, encode_mark_1, encode_if_3, encode_zero_1, encode_s_1, encode_0, encode_prod_2, encode_p_1, encode_add_2, encode_true, encode_false Defined Pair Symbols: ENCARG_1, ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c3_2, c4_2, c5_2, c6_4, c7_2, c8_2, c9_3, c10_2, c11_3, c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_3, c35_3, c36_3, c37_3, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1 ---------------------------------------- (45) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: encode_active(z0) -> active(encArg(z0)) encode_fact(z0) -> fact(encArg(z0)) encode_mark(z0) -> mark(encArg(z0)) encode_if(z0, z1, z2) -> if(encArg(z0), encArg(z1), encArg(z2)) encode_zero(z0) -> zero(encArg(z0)) encode_s(z0) -> s(encArg(z0)) encode_0 -> 0 encode_prod(z0, z1) -> prod(encArg(z0), encArg(z1)) encode_p(z0) -> p(encArg(z0)) encode_add(z0, z1) -> add(encArg(z0), encArg(z1)) encode_true -> true encode_false -> false ---------------------------------------- (46) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ENCARG(cons_active(z0)) -> c3(ACTIVE(encArg(z0)), ENCARG(z0)) ENCARG(cons_mark(z0)) -> c4(MARK(encArg(z0)), ENCARG(z0)) ENCARG(cons_fact(z0)) -> c5(FACT(encArg(z0)), ENCARG(z0)) ENCARG(cons_if(z0, z1, z2)) -> c6(IF(encArg(z0), encArg(z1), encArg(z2)), ENCARG(z0), ENCARG(z1), ENCARG(z2)) ENCARG(cons_zero(z0)) -> c7(ZERO(encArg(z0)), ENCARG(z0)) ENCARG(cons_s(z0)) -> c8(S(encArg(z0)), ENCARG(z0)) ENCARG(cons_prod(z0, z1)) -> c9(PROD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_p(z0)) -> c10(P(encArg(z0)), ENCARG(z0)) ENCARG(cons_add(z0, z1)) -> c11(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ENCARG_1, ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c3_2, c4_2, c5_2, c6_4, c7_2, c8_2, c9_3, c10_2, c11_3, c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_3, c35_3, c36_3, c37_3, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1 ---------------------------------------- (47) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCARG(cons_active(z0)) -> c3(ACTIVE(encArg(z0)), ENCARG(z0)) by ENCARG(cons_active(0)) -> c3(ACTIVE(0), ENCARG(0)) ENCARG(cons_active(true)) -> c3(ACTIVE(true), ENCARG(true)) ENCARG(cons_active(false)) -> c3(ACTIVE(false), ENCARG(false)) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ---------------------------------------- (48) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ENCARG(cons_mark(z0)) -> c4(MARK(encArg(z0)), ENCARG(z0)) ENCARG(cons_fact(z0)) -> c5(FACT(encArg(z0)), ENCARG(z0)) ENCARG(cons_if(z0, z1, z2)) -> c6(IF(encArg(z0), encArg(z1), encArg(z2)), ENCARG(z0), ENCARG(z1), ENCARG(z2)) ENCARG(cons_zero(z0)) -> c7(ZERO(encArg(z0)), ENCARG(z0)) ENCARG(cons_s(z0)) -> c8(S(encArg(z0)), ENCARG(z0)) ENCARG(cons_prod(z0, z1)) -> c9(PROD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_p(z0)) -> c10(P(encArg(z0)), ENCARG(z0)) ENCARG(cons_add(z0, z1)) -> c11(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(0)) -> c3(ACTIVE(0), ENCARG(0)) ENCARG(cons_active(true)) -> c3(ACTIVE(true), ENCARG(true)) ENCARG(cons_active(false)) -> c3(ACTIVE(false), ENCARG(false)) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ENCARG_1, ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c4_2, c5_2, c6_4, c7_2, c8_2, c9_3, c10_2, c11_3, c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_3, c35_3, c36_3, c37_3, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2 ---------------------------------------- (49) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing nodes: ENCARG(cons_active(true)) -> c3(ACTIVE(true), ENCARG(true)) ENCARG(cons_active(false)) -> c3(ACTIVE(false), ENCARG(false)) ENCARG(cons_active(0)) -> c3(ACTIVE(0), ENCARG(0)) ---------------------------------------- (50) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ENCARG(cons_mark(z0)) -> c4(MARK(encArg(z0)), ENCARG(z0)) ENCARG(cons_fact(z0)) -> c5(FACT(encArg(z0)), ENCARG(z0)) ENCARG(cons_if(z0, z1, z2)) -> c6(IF(encArg(z0), encArg(z1), encArg(z2)), ENCARG(z0), ENCARG(z1), ENCARG(z2)) ENCARG(cons_zero(z0)) -> c7(ZERO(encArg(z0)), ENCARG(z0)) ENCARG(cons_s(z0)) -> c8(S(encArg(z0)), ENCARG(z0)) ENCARG(cons_prod(z0, z1)) -> c9(PROD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_p(z0)) -> c10(P(encArg(z0)), ENCARG(z0)) ENCARG(cons_add(z0, z1)) -> c11(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ENCARG_1, ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c4_2, c5_2, c6_4, c7_2, c8_2, c9_3, c10_2, c11_3, c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_3, c35_3, c36_3, c37_3, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2 ---------------------------------------- (51) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCARG(cons_mark(z0)) -> c4(MARK(encArg(z0)), ENCARG(z0)) by ENCARG(cons_mark(0)) -> c4(MARK(0), ENCARG(0)) ENCARG(cons_mark(true)) -> c4(MARK(true), ENCARG(true)) ENCARG(cons_mark(false)) -> c4(MARK(false), ENCARG(false)) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ---------------------------------------- (52) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ENCARG(cons_fact(z0)) -> c5(FACT(encArg(z0)), ENCARG(z0)) ENCARG(cons_if(z0, z1, z2)) -> c6(IF(encArg(z0), encArg(z1), encArg(z2)), ENCARG(z0), ENCARG(z1), ENCARG(z2)) ENCARG(cons_zero(z0)) -> c7(ZERO(encArg(z0)), ENCARG(z0)) ENCARG(cons_s(z0)) -> c8(S(encArg(z0)), ENCARG(z0)) ENCARG(cons_prod(z0, z1)) -> c9(PROD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_p(z0)) -> c10(P(encArg(z0)), ENCARG(z0)) ENCARG(cons_add(z0, z1)) -> c11(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0), ENCARG(0)) ENCARG(cons_mark(true)) -> c4(MARK(true), ENCARG(true)) ENCARG(cons_mark(false)) -> c4(MARK(false), ENCARG(false)) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ENCARG_1, ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c5_2, c6_4, c7_2, c8_2, c9_3, c10_2, c11_3, c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_3, c35_3, c36_3, c37_3, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2 ---------------------------------------- (53) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing tuple parts ---------------------------------------- (54) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ENCARG(cons_fact(z0)) -> c5(FACT(encArg(z0)), ENCARG(z0)) ENCARG(cons_if(z0, z1, z2)) -> c6(IF(encArg(z0), encArg(z1), encArg(z2)), ENCARG(z0), ENCARG(z1), ENCARG(z2)) ENCARG(cons_zero(z0)) -> c7(ZERO(encArg(z0)), ENCARG(z0)) ENCARG(cons_s(z0)) -> c8(S(encArg(z0)), ENCARG(z0)) ENCARG(cons_prod(z0, z1)) -> c9(PROD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_p(z0)) -> c10(P(encArg(z0)), ENCARG(z0)) ENCARG(cons_add(z0, z1)) -> c11(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ENCARG_1, ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c5_2, c6_4, c7_2, c8_2, c9_3, c10_2, c11_3, c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_3, c35_3, c36_3, c37_3, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1 ---------------------------------------- (55) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCARG(cons_fact(z0)) -> c5(FACT(encArg(z0)), ENCARG(z0)) by ENCARG(cons_fact(0)) -> c5(FACT(0), ENCARG(0)) ENCARG(cons_fact(true)) -> c5(FACT(true), ENCARG(true)) ENCARG(cons_fact(false)) -> c5(FACT(false), ENCARG(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ---------------------------------------- (56) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ENCARG(cons_if(z0, z1, z2)) -> c6(IF(encArg(z0), encArg(z1), encArg(z2)), ENCARG(z0), ENCARG(z1), ENCARG(z2)) ENCARG(cons_zero(z0)) -> c7(ZERO(encArg(z0)), ENCARG(z0)) ENCARG(cons_s(z0)) -> c8(S(encArg(z0)), ENCARG(z0)) ENCARG(cons_prod(z0, z1)) -> c9(PROD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_p(z0)) -> c10(P(encArg(z0)), ENCARG(z0)) ENCARG(cons_add(z0, z1)) -> c11(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(0)) -> c5(FACT(0), ENCARG(0)) ENCARG(cons_fact(true)) -> c5(FACT(true), ENCARG(true)) ENCARG(cons_fact(false)) -> c5(FACT(false), ENCARG(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ENCARG_1, ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c6_4, c7_2, c8_2, c9_3, c10_2, c11_3, c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_3, c35_3, c36_3, c37_3, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2 ---------------------------------------- (57) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing nodes: ENCARG(cons_fact(false)) -> c5(FACT(false), ENCARG(false)) ENCARG(cons_fact(0)) -> c5(FACT(0), ENCARG(0)) ENCARG(cons_fact(true)) -> c5(FACT(true), ENCARG(true)) ---------------------------------------- (58) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ENCARG(cons_if(z0, z1, z2)) -> c6(IF(encArg(z0), encArg(z1), encArg(z2)), ENCARG(z0), ENCARG(z1), ENCARG(z2)) ENCARG(cons_zero(z0)) -> c7(ZERO(encArg(z0)), ENCARG(z0)) ENCARG(cons_s(z0)) -> c8(S(encArg(z0)), ENCARG(z0)) ENCARG(cons_prod(z0, z1)) -> c9(PROD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_p(z0)) -> c10(P(encArg(z0)), ENCARG(z0)) ENCARG(cons_add(z0, z1)) -> c11(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ENCARG_1, ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c6_4, c7_2, c8_2, c9_3, c10_2, c11_3, c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_3, c35_3, c36_3, c37_3, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2 ---------------------------------------- (59) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCARG(cons_if(z0, z1, z2)) -> c6(IF(encArg(z0), encArg(z1), encArg(z2)), ENCARG(z0), ENCARG(z1), ENCARG(z2)) by ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1), ENCARG(0)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1), ENCARG(true)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1), ENCARG(false)) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(true), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(false), ENCARG(x2)) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(0), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(true), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(false), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ---------------------------------------- (60) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ENCARG(cons_zero(z0)) -> c7(ZERO(encArg(z0)), ENCARG(z0)) ENCARG(cons_s(z0)) -> c8(S(encArg(z0)), ENCARG(z0)) ENCARG(cons_prod(z0, z1)) -> c9(PROD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_p(z0)) -> c10(P(encArg(z0)), ENCARG(z0)) ENCARG(cons_add(z0, z1)) -> c11(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1), ENCARG(0)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1), ENCARG(true)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1), ENCARG(false)) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(true), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(false), ENCARG(x2)) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(0), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(true), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(false), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ENCARG_1, ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c7_2, c8_2, c9_3, c10_2, c11_3, c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_3, c35_3, c36_3, c37_3, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4 ---------------------------------------- (61) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 9 trailing tuple parts ---------------------------------------- (62) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ENCARG(cons_zero(z0)) -> c7(ZERO(encArg(z0)), ENCARG(z0)) ENCARG(cons_s(z0)) -> c8(S(encArg(z0)), ENCARG(z0)) ENCARG(cons_prod(z0, z1)) -> c9(PROD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_p(z0)) -> c10(P(encArg(z0)), ENCARG(z0)) ENCARG(cons_add(z0, z1)) -> c11(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ENCARG_1, ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c7_2, c8_2, c9_3, c10_2, c11_3, c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_3, c35_3, c36_3, c37_3, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3 ---------------------------------------- (63) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCARG(cons_zero(z0)) -> c7(ZERO(encArg(z0)), ENCARG(z0)) by ENCARG(cons_zero(0)) -> c7(ZERO(0), ENCARG(0)) ENCARG(cons_zero(true)) -> c7(ZERO(true), ENCARG(true)) ENCARG(cons_zero(false)) -> c7(ZERO(false), ENCARG(false)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ---------------------------------------- (64) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ENCARG(cons_s(z0)) -> c8(S(encArg(z0)), ENCARG(z0)) ENCARG(cons_prod(z0, z1)) -> c9(PROD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_p(z0)) -> c10(P(encArg(z0)), ENCARG(z0)) ENCARG(cons_add(z0, z1)) -> c11(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(0)) -> c7(ZERO(0), ENCARG(0)) ENCARG(cons_zero(true)) -> c7(ZERO(true), ENCARG(true)) ENCARG(cons_zero(false)) -> c7(ZERO(false), ENCARG(false)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ENCARG_1, ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c8_2, c9_3, c10_2, c11_3, c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_3, c35_3, c36_3, c37_3, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2 ---------------------------------------- (65) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing nodes: ENCARG(cons_zero(true)) -> c7(ZERO(true), ENCARG(true)) ENCARG(cons_zero(0)) -> c7(ZERO(0), ENCARG(0)) ENCARG(cons_zero(false)) -> c7(ZERO(false), ENCARG(false)) ---------------------------------------- (66) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ENCARG(cons_s(z0)) -> c8(S(encArg(z0)), ENCARG(z0)) ENCARG(cons_prod(z0, z1)) -> c9(PROD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_p(z0)) -> c10(P(encArg(z0)), ENCARG(z0)) ENCARG(cons_add(z0, z1)) -> c11(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ENCARG_1, ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c8_2, c9_3, c10_2, c11_3, c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_3, c35_3, c36_3, c37_3, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2 ---------------------------------------- (67) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCARG(cons_s(z0)) -> c8(S(encArg(z0)), ENCARG(z0)) by ENCARG(cons_s(0)) -> c8(S(0), ENCARG(0)) ENCARG(cons_s(true)) -> c8(S(true), ENCARG(true)) ENCARG(cons_s(false)) -> c8(S(false), ENCARG(false)) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ---------------------------------------- (68) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ENCARG(cons_prod(z0, z1)) -> c9(PROD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_p(z0)) -> c10(P(encArg(z0)), ENCARG(z0)) ENCARG(cons_add(z0, z1)) -> c11(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(0)) -> c8(S(0), ENCARG(0)) ENCARG(cons_s(true)) -> c8(S(true), ENCARG(true)) ENCARG(cons_s(false)) -> c8(S(false), ENCARG(false)) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ENCARG_1, ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c9_3, c10_2, c11_3, c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_3, c35_3, c36_3, c37_3, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2 ---------------------------------------- (69) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing nodes: ENCARG(cons_s(true)) -> c8(S(true), ENCARG(true)) ENCARG(cons_s(0)) -> c8(S(0), ENCARG(0)) ENCARG(cons_s(false)) -> c8(S(false), ENCARG(false)) ---------------------------------------- (70) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ENCARG(cons_prod(z0, z1)) -> c9(PROD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_p(z0)) -> c10(P(encArg(z0)), ENCARG(z0)) ENCARG(cons_add(z0, z1)) -> c11(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ENCARG_1, ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c9_3, c10_2, c11_3, c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_3, c35_3, c36_3, c37_3, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2 ---------------------------------------- (71) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCARG(cons_prod(z0, z1)) -> c9(PROD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) by ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0), ENCARG(0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0), ENCARG(true)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0), ENCARG(false)) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(0), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(true), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(false), ENCARG(x1)) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ---------------------------------------- (72) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ENCARG(cons_p(z0)) -> c10(P(encArg(z0)), ENCARG(z0)) ENCARG(cons_add(z0, z1)) -> c11(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0), ENCARG(0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0), ENCARG(true)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0), ENCARG(false)) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(0), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(true), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(false), ENCARG(x1)) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ENCARG_1, ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c10_2, c11_3, c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_3, c35_3, c36_3, c37_3, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3 ---------------------------------------- (73) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 6 trailing tuple parts ---------------------------------------- (74) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ENCARG(cons_p(z0)) -> c10(P(encArg(z0)), ENCARG(z0)) ENCARG(cons_add(z0, z1)) -> c11(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ENCARG_1, ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c10_2, c11_3, c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_3, c35_3, c36_3, c37_3, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2 ---------------------------------------- (75) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCARG(cons_p(z0)) -> c10(P(encArg(z0)), ENCARG(z0)) by ENCARG(cons_p(0)) -> c10(P(0), ENCARG(0)) ENCARG(cons_p(true)) -> c10(P(true), ENCARG(true)) ENCARG(cons_p(false)) -> c10(P(false), ENCARG(false)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ---------------------------------------- (76) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ENCARG(cons_add(z0, z1)) -> c11(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(0)) -> c10(P(0), ENCARG(0)) ENCARG(cons_p(true)) -> c10(P(true), ENCARG(true)) ENCARG(cons_p(false)) -> c10(P(false), ENCARG(false)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ENCARG_1, ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c11_3, c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_3, c35_3, c36_3, c37_3, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2 ---------------------------------------- (77) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing nodes: ENCARG(cons_p(false)) -> c10(P(false), ENCARG(false)) ENCARG(cons_p(true)) -> c10(P(true), ENCARG(true)) ENCARG(cons_p(0)) -> c10(P(0), ENCARG(0)) ---------------------------------------- (78) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ENCARG(cons_add(z0, z1)) -> c11(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ENCARG_1, ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c11_3, c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_3, c35_3, c36_3, c37_3, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2 ---------------------------------------- (79) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCARG(cons_add(z0, z1)) -> c11(ADD(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) by ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0), ENCARG(0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0), ENCARG(true)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0), ENCARG(false)) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(0), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(true), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(false), ENCARG(x1)) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ---------------------------------------- (80) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0), ENCARG(0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0), ENCARG(true)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0), ENCARG(false)) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(0), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(true), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(false), ENCARG(x1)) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2, ENCARG_1 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_3, c35_3, c36_3, c37_3, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3 ---------------------------------------- (81) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 6 trailing tuple parts ---------------------------------------- (82) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2, ENCARG_1 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_3, c35_3, c36_3, c37_3, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2 ---------------------------------------- (83) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace MARK(fact(z0)) -> c34(ACTIVE(fact(mark(z0))), FACT(mark(z0)), MARK(z0)) by MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) ---------------------------------------- (84) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2, ENCARG_1 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c35_3, c36_3, c37_3, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3 ---------------------------------------- (85) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(mark(z0), z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) by MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) ---------------------------------------- (86) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2, ENCARG_1 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c36_3, c37_3, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1 ---------------------------------------- (87) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace MARK(zero(z0)) -> c36(ACTIVE(zero(mark(z0))), ZERO(mark(z0)), MARK(z0)) by MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) ---------------------------------------- (88) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2, ENCARG_1 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c37_3, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3 ---------------------------------------- (89) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace MARK(s(z0)) -> c37(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0)) by MARK(s(z0)) -> c37(ACTIVE(s(z0)), S(mark(z0)), MARK(z0)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) ---------------------------------------- (90) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(z0)) -> c37(ACTIVE(s(z0)), S(mark(z0)), MARK(z0)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(z0)) -> c37(ACTIVE(s(z0)), S(mark(z0)), MARK(z0)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2, ENCARG_1 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3 ---------------------------------------- (91) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (92) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2, ENCARG_1 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c39_4, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2 ---------------------------------------- (93) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace MARK(prod(z0, z1)) -> c39(ACTIVE(prod(mark(z0), mark(z1))), PROD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) by MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) ---------------------------------------- (94) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2, ENCARG_1 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c40_3, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4 ---------------------------------------- (95) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace MARK(p(z0)) -> c40(ACTIVE(p(mark(z0))), P(mark(z0)), MARK(z0)) by MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) ---------------------------------------- (96) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, MARK_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2, ENCARG_1 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c41_4, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3 ---------------------------------------- (97) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace MARK(add(z0, z1)) -> c41(ACTIVE(add(mark(z0), mark(z1))), ADD(mark(z0), mark(z1)), MARK(z0), MARK(z1)) by MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ---------------------------------------- (98) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2, ENCARG_1 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4 ---------------------------------------- (99) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCODE_ACTIVE(z0) -> c(ACTIVE(encArg(z0))) by ENCODE_ACTIVE(0) -> c(ACTIVE(0)) ENCODE_ACTIVE(true) -> c(ACTIVE(true)) ENCODE_ACTIVE(false) -> c(ACTIVE(false)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ---------------------------------------- (100) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(0) -> c(ACTIVE(0)) ENCODE_ACTIVE(true) -> c(ACTIVE(true)) ENCODE_ACTIVE(false) -> c(ACTIVE(false)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2, ENCARG_1, ENCODE_ACTIVE_1 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4 ---------------------------------------- (101) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing nodes: ENCODE_ACTIVE(false) -> c(ACTIVE(false)) ENCODE_ACTIVE(true) -> c(ACTIVE(true)) ENCODE_ACTIVE(0) -> c(ACTIVE(0)) ---------------------------------------- (102) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_FACT(z0) -> c(FACT(encArg(z0))) ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2, ENCARG_1, ENCODE_ACTIVE_1 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4 ---------------------------------------- (103) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCODE_FACT(z0) -> c(FACT(encArg(z0))) by ENCODE_FACT(0) -> c(FACT(0)) ENCODE_FACT(true) -> c(FACT(true)) ENCODE_FACT(false) -> c(FACT(false)) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ---------------------------------------- (104) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(0) -> c(FACT(0)) ENCODE_FACT(true) -> c(FACT(true)) ENCODE_FACT(false) -> c(FACT(false)) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4 ---------------------------------------- (105) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing nodes: ENCODE_FACT(0) -> c(FACT(0)) ENCODE_FACT(true) -> c(FACT(true)) ENCODE_FACT(false) -> c(FACT(false)) ---------------------------------------- (106) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_MARK(z0) -> c(MARK(encArg(z0))) ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4 ---------------------------------------- (107) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCODE_MARK(z0) -> c(MARK(encArg(z0))) by ENCODE_MARK(0) -> c(MARK(0)) ENCODE_MARK(true) -> c(MARK(true)) ENCODE_MARK(false) -> c(MARK(false)) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ---------------------------------------- (108) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(0) -> c(MARK(0)) ENCODE_MARK(true) -> c(MARK(true)) ENCODE_MARK(false) -> c(MARK(false)) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4 ---------------------------------------- (109) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 3 leading nodes: ENCODE_MARK(0) -> c(MARK(0)) ENCODE_MARK(true) -> c(MARK(true)) ENCODE_MARK(false) -> c(MARK(false)) ---------------------------------------- (110) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4 ---------------------------------------- (111) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCODE_IF(z0, z1, z2) -> c(IF(encArg(z0), encArg(z1), encArg(z2))) by ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ---------------------------------------- (112) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4 ---------------------------------------- (113) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCODE_ZERO(z0) -> c(ZERO(encArg(z0))) by ENCODE_ZERO(0) -> c(ZERO(0)) ENCODE_ZERO(true) -> c(ZERO(true)) ENCODE_ZERO(false) -> c(ZERO(false)) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ---------------------------------------- (114) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(0) -> c(ZERO(0)) ENCODE_ZERO(true) -> c(ZERO(true)) ENCODE_ZERO(false) -> c(ZERO(false)) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4 ---------------------------------------- (115) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing nodes: ENCODE_ZERO(0) -> c(ZERO(0)) ENCODE_ZERO(true) -> c(ZERO(true)) ENCODE_ZERO(false) -> c(ZERO(false)) ---------------------------------------- (116) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_S(z0) -> c(S(encArg(z0))) ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4 ---------------------------------------- (117) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCODE_S(z0) -> c(S(encArg(z0))) by ENCODE_S(0) -> c(S(0)) ENCODE_S(true) -> c(S(true)) ENCODE_S(false) -> c(S(false)) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) ---------------------------------------- (118) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(0) -> c(S(0)) ENCODE_S(true) -> c(S(true)) ENCODE_S(false) -> c(S(false)) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4 ---------------------------------------- (119) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing nodes: ENCODE_S(0) -> c(S(0)) ENCODE_S(true) -> c(S(true)) ENCODE_S(false) -> c(S(false)) ---------------------------------------- (120) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4 ---------------------------------------- (121) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCODE_PROD(z0, z1) -> c(PROD(encArg(z0), encArg(z1))) by ENCODE_PROD(x0, 0) -> c(PROD(encArg(x0), 0)) ENCODE_PROD(x0, true) -> c(PROD(encArg(x0), true)) ENCODE_PROD(x0, false) -> c(PROD(encArg(x0), false)) ENCODE_PROD(x0, cons_active(z0)) -> c(PROD(encArg(x0), active(encArg(z0)))) ENCODE_PROD(x0, cons_mark(z0)) -> c(PROD(encArg(x0), mark(encArg(z0)))) ENCODE_PROD(x0, cons_fact(z0)) -> c(PROD(encArg(x0), fact(encArg(z0)))) ENCODE_PROD(x0, cons_if(z0, z1, z2)) -> c(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_PROD(x0, cons_zero(z0)) -> c(PROD(encArg(x0), zero(encArg(z0)))) ENCODE_PROD(x0, cons_s(z0)) -> c(PROD(encArg(x0), s(encArg(z0)))) ENCODE_PROD(x0, cons_prod(z0, z1)) -> c(PROD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, cons_p(z0)) -> c(PROD(encArg(x0), p(encArg(z0)))) ENCODE_PROD(x0, cons_add(z0, z1)) -> c(PROD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_PROD(0, x1) -> c(PROD(0, encArg(x1))) ENCODE_PROD(true, x1) -> c(PROD(true, encArg(x1))) ENCODE_PROD(false, x1) -> c(PROD(false, encArg(x1))) ENCODE_PROD(cons_active(z0), x1) -> c(PROD(active(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_mark(z0), x1) -> c(PROD(mark(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_fact(z0), x1) -> c(PROD(fact(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_if(z0, z1, z2), x1) -> c(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_PROD(cons_zero(z0), x1) -> c(PROD(zero(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_s(z0), x1) -> c(PROD(s(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_prod(z0, z1), x1) -> c(PROD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_PROD(cons_p(z0), x1) -> c(PROD(p(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_add(z0, z1), x1) -> c(PROD(add(encArg(z0), encArg(z1)), encArg(x1))) ---------------------------------------- (122) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_P(z0) -> c(P(encArg(z0))) ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, 0) -> c(PROD(encArg(x0), 0)) ENCODE_PROD(x0, true) -> c(PROD(encArg(x0), true)) ENCODE_PROD(x0, false) -> c(PROD(encArg(x0), false)) ENCODE_PROD(x0, cons_active(z0)) -> c(PROD(encArg(x0), active(encArg(z0)))) ENCODE_PROD(x0, cons_mark(z0)) -> c(PROD(encArg(x0), mark(encArg(z0)))) ENCODE_PROD(x0, cons_fact(z0)) -> c(PROD(encArg(x0), fact(encArg(z0)))) ENCODE_PROD(x0, cons_if(z0, z1, z2)) -> c(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_PROD(x0, cons_zero(z0)) -> c(PROD(encArg(x0), zero(encArg(z0)))) ENCODE_PROD(x0, cons_s(z0)) -> c(PROD(encArg(x0), s(encArg(z0)))) ENCODE_PROD(x0, cons_prod(z0, z1)) -> c(PROD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, cons_p(z0)) -> c(PROD(encArg(x0), p(encArg(z0)))) ENCODE_PROD(x0, cons_add(z0, z1)) -> c(PROD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_PROD(0, x1) -> c(PROD(0, encArg(x1))) ENCODE_PROD(true, x1) -> c(PROD(true, encArg(x1))) ENCODE_PROD(false, x1) -> c(PROD(false, encArg(x1))) ENCODE_PROD(cons_active(z0), x1) -> c(PROD(active(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_mark(z0), x1) -> c(PROD(mark(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_fact(z0), x1) -> c(PROD(fact(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_if(z0, z1, z2), x1) -> c(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_PROD(cons_zero(z0), x1) -> c(PROD(zero(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_s(z0), x1) -> c(PROD(s(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_prod(z0, z1), x1) -> c(PROD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_PROD(cons_p(z0), x1) -> c(PROD(p(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_add(z0, z1), x1) -> c(PROD(add(encArg(z0), encArg(z1)), encArg(x1))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCODE_P_1, ENCODE_ADD_2, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4 ---------------------------------------- (123) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCODE_P(z0) -> c(P(encArg(z0))) by ENCODE_P(0) -> c(P(0)) ENCODE_P(true) -> c(P(true)) ENCODE_P(false) -> c(P(false)) ENCODE_P(cons_active(z0)) -> c(P(active(encArg(z0)))) ENCODE_P(cons_mark(z0)) -> c(P(mark(encArg(z0)))) ENCODE_P(cons_fact(z0)) -> c(P(fact(encArg(z0)))) ENCODE_P(cons_if(z0, z1, z2)) -> c(P(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_P(cons_zero(z0)) -> c(P(zero(encArg(z0)))) ENCODE_P(cons_s(z0)) -> c(P(s(encArg(z0)))) ENCODE_P(cons_prod(z0, z1)) -> c(P(prod(encArg(z0), encArg(z1)))) ENCODE_P(cons_p(z0)) -> c(P(p(encArg(z0)))) ENCODE_P(cons_add(z0, z1)) -> c(P(add(encArg(z0), encArg(z1)))) ---------------------------------------- (124) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, 0) -> c(PROD(encArg(x0), 0)) ENCODE_PROD(x0, true) -> c(PROD(encArg(x0), true)) ENCODE_PROD(x0, false) -> c(PROD(encArg(x0), false)) ENCODE_PROD(x0, cons_active(z0)) -> c(PROD(encArg(x0), active(encArg(z0)))) ENCODE_PROD(x0, cons_mark(z0)) -> c(PROD(encArg(x0), mark(encArg(z0)))) ENCODE_PROD(x0, cons_fact(z0)) -> c(PROD(encArg(x0), fact(encArg(z0)))) ENCODE_PROD(x0, cons_if(z0, z1, z2)) -> c(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_PROD(x0, cons_zero(z0)) -> c(PROD(encArg(x0), zero(encArg(z0)))) ENCODE_PROD(x0, cons_s(z0)) -> c(PROD(encArg(x0), s(encArg(z0)))) ENCODE_PROD(x0, cons_prod(z0, z1)) -> c(PROD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, cons_p(z0)) -> c(PROD(encArg(x0), p(encArg(z0)))) ENCODE_PROD(x0, cons_add(z0, z1)) -> c(PROD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_PROD(0, x1) -> c(PROD(0, encArg(x1))) ENCODE_PROD(true, x1) -> c(PROD(true, encArg(x1))) ENCODE_PROD(false, x1) -> c(PROD(false, encArg(x1))) ENCODE_PROD(cons_active(z0), x1) -> c(PROD(active(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_mark(z0), x1) -> c(PROD(mark(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_fact(z0), x1) -> c(PROD(fact(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_if(z0, z1, z2), x1) -> c(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_PROD(cons_zero(z0), x1) -> c(PROD(zero(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_s(z0), x1) -> c(PROD(s(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_prod(z0, z1), x1) -> c(PROD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_PROD(cons_p(z0), x1) -> c(PROD(p(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_add(z0, z1), x1) -> c(PROD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_P(0) -> c(P(0)) ENCODE_P(true) -> c(P(true)) ENCODE_P(false) -> c(P(false)) ENCODE_P(cons_active(z0)) -> c(P(active(encArg(z0)))) ENCODE_P(cons_mark(z0)) -> c(P(mark(encArg(z0)))) ENCODE_P(cons_fact(z0)) -> c(P(fact(encArg(z0)))) ENCODE_P(cons_if(z0, z1, z2)) -> c(P(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_P(cons_zero(z0)) -> c(P(zero(encArg(z0)))) ENCODE_P(cons_s(z0)) -> c(P(s(encArg(z0)))) ENCODE_P(cons_prod(z0, z1)) -> c(P(prod(encArg(z0), encArg(z1)))) ENCODE_P(cons_p(z0)) -> c(P(p(encArg(z0)))) ENCODE_P(cons_add(z0, z1)) -> c(P(add(encArg(z0), encArg(z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCODE_ADD_2, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4 ---------------------------------------- (125) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing nodes: ENCODE_P(false) -> c(P(false)) ENCODE_P(0) -> c(P(0)) ENCODE_P(true) -> c(P(true)) ---------------------------------------- (126) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, 0) -> c(PROD(encArg(x0), 0)) ENCODE_PROD(x0, true) -> c(PROD(encArg(x0), true)) ENCODE_PROD(x0, false) -> c(PROD(encArg(x0), false)) ENCODE_PROD(x0, cons_active(z0)) -> c(PROD(encArg(x0), active(encArg(z0)))) ENCODE_PROD(x0, cons_mark(z0)) -> c(PROD(encArg(x0), mark(encArg(z0)))) ENCODE_PROD(x0, cons_fact(z0)) -> c(PROD(encArg(x0), fact(encArg(z0)))) ENCODE_PROD(x0, cons_if(z0, z1, z2)) -> c(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_PROD(x0, cons_zero(z0)) -> c(PROD(encArg(x0), zero(encArg(z0)))) ENCODE_PROD(x0, cons_s(z0)) -> c(PROD(encArg(x0), s(encArg(z0)))) ENCODE_PROD(x0, cons_prod(z0, z1)) -> c(PROD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, cons_p(z0)) -> c(PROD(encArg(x0), p(encArg(z0)))) ENCODE_PROD(x0, cons_add(z0, z1)) -> c(PROD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_PROD(0, x1) -> c(PROD(0, encArg(x1))) ENCODE_PROD(true, x1) -> c(PROD(true, encArg(x1))) ENCODE_PROD(false, x1) -> c(PROD(false, encArg(x1))) ENCODE_PROD(cons_active(z0), x1) -> c(PROD(active(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_mark(z0), x1) -> c(PROD(mark(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_fact(z0), x1) -> c(PROD(fact(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_if(z0, z1, z2), x1) -> c(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_PROD(cons_zero(z0), x1) -> c(PROD(zero(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_s(z0), x1) -> c(PROD(s(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_prod(z0, z1), x1) -> c(PROD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_PROD(cons_p(z0), x1) -> c(PROD(p(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_add(z0, z1), x1) -> c(PROD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_P(cons_active(z0)) -> c(P(active(encArg(z0)))) ENCODE_P(cons_mark(z0)) -> c(P(mark(encArg(z0)))) ENCODE_P(cons_fact(z0)) -> c(P(fact(encArg(z0)))) ENCODE_P(cons_if(z0, z1, z2)) -> c(P(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_P(cons_zero(z0)) -> c(P(zero(encArg(z0)))) ENCODE_P(cons_s(z0)) -> c(P(s(encArg(z0)))) ENCODE_P(cons_prod(z0, z1)) -> c(P(prod(encArg(z0), encArg(z1)))) ENCODE_P(cons_p(z0)) -> c(P(p(encArg(z0)))) ENCODE_P(cons_add(z0, z1)) -> c(P(add(encArg(z0), encArg(z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCODE_ADD_2, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c_1, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4 ---------------------------------------- (127) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCODE_ADD(z0, z1) -> c(ADD(encArg(z0), encArg(z1))) by ENCODE_ADD(x0, 0) -> c(ADD(encArg(x0), 0)) ENCODE_ADD(x0, true) -> c(ADD(encArg(x0), true)) ENCODE_ADD(x0, false) -> c(ADD(encArg(x0), false)) ENCODE_ADD(x0, cons_active(z0)) -> c(ADD(encArg(x0), active(encArg(z0)))) ENCODE_ADD(x0, cons_mark(z0)) -> c(ADD(encArg(x0), mark(encArg(z0)))) ENCODE_ADD(x0, cons_fact(z0)) -> c(ADD(encArg(x0), fact(encArg(z0)))) ENCODE_ADD(x0, cons_if(z0, z1, z2)) -> c(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ADD(x0, cons_zero(z0)) -> c(ADD(encArg(x0), zero(encArg(z0)))) ENCODE_ADD(x0, cons_s(z0)) -> c(ADD(encArg(x0), s(encArg(z0)))) ENCODE_ADD(x0, cons_prod(z0, z1)) -> c(ADD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, cons_p(z0)) -> c(ADD(encArg(x0), p(encArg(z0)))) ENCODE_ADD(x0, cons_add(z0, z1)) -> c(ADD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_ADD(0, x1) -> c(ADD(0, encArg(x1))) ENCODE_ADD(true, x1) -> c(ADD(true, encArg(x1))) ENCODE_ADD(false, x1) -> c(ADD(false, encArg(x1))) ENCODE_ADD(cons_active(z0), x1) -> c(ADD(active(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_mark(z0), x1) -> c(ADD(mark(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_fact(z0), x1) -> c(ADD(fact(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_if(z0, z1, z2), x1) -> c(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_ADD(cons_zero(z0), x1) -> c(ADD(zero(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_s(z0), x1) -> c(ADD(s(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_prod(z0, z1), x1) -> c(ADD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_ADD(cons_p(z0), x1) -> c(ADD(p(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_add(z0, z1), x1) -> c(ADD(add(encArg(z0), encArg(z1)), encArg(x1))) ---------------------------------------- (128) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, 0) -> c(PROD(encArg(x0), 0)) ENCODE_PROD(x0, true) -> c(PROD(encArg(x0), true)) ENCODE_PROD(x0, false) -> c(PROD(encArg(x0), false)) ENCODE_PROD(x0, cons_active(z0)) -> c(PROD(encArg(x0), active(encArg(z0)))) ENCODE_PROD(x0, cons_mark(z0)) -> c(PROD(encArg(x0), mark(encArg(z0)))) ENCODE_PROD(x0, cons_fact(z0)) -> c(PROD(encArg(x0), fact(encArg(z0)))) ENCODE_PROD(x0, cons_if(z0, z1, z2)) -> c(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_PROD(x0, cons_zero(z0)) -> c(PROD(encArg(x0), zero(encArg(z0)))) ENCODE_PROD(x0, cons_s(z0)) -> c(PROD(encArg(x0), s(encArg(z0)))) ENCODE_PROD(x0, cons_prod(z0, z1)) -> c(PROD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, cons_p(z0)) -> c(PROD(encArg(x0), p(encArg(z0)))) ENCODE_PROD(x0, cons_add(z0, z1)) -> c(PROD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_PROD(0, x1) -> c(PROD(0, encArg(x1))) ENCODE_PROD(true, x1) -> c(PROD(true, encArg(x1))) ENCODE_PROD(false, x1) -> c(PROD(false, encArg(x1))) ENCODE_PROD(cons_active(z0), x1) -> c(PROD(active(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_mark(z0), x1) -> c(PROD(mark(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_fact(z0), x1) -> c(PROD(fact(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_if(z0, z1, z2), x1) -> c(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_PROD(cons_zero(z0), x1) -> c(PROD(zero(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_s(z0), x1) -> c(PROD(s(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_prod(z0, z1), x1) -> c(PROD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_PROD(cons_p(z0), x1) -> c(PROD(p(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_add(z0, z1), x1) -> c(PROD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_P(cons_active(z0)) -> c(P(active(encArg(z0)))) ENCODE_P(cons_mark(z0)) -> c(P(mark(encArg(z0)))) ENCODE_P(cons_fact(z0)) -> c(P(fact(encArg(z0)))) ENCODE_P(cons_if(z0, z1, z2)) -> c(P(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_P(cons_zero(z0)) -> c(P(zero(encArg(z0)))) ENCODE_P(cons_s(z0)) -> c(P(s(encArg(z0)))) ENCODE_P(cons_prod(z0, z1)) -> c(P(prod(encArg(z0), encArg(z1)))) ENCODE_P(cons_p(z0)) -> c(P(p(encArg(z0)))) ENCODE_P(cons_add(z0, z1)) -> c(P(add(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, 0) -> c(ADD(encArg(x0), 0)) ENCODE_ADD(x0, true) -> c(ADD(encArg(x0), true)) ENCODE_ADD(x0, false) -> c(ADD(encArg(x0), false)) ENCODE_ADD(x0, cons_active(z0)) -> c(ADD(encArg(x0), active(encArg(z0)))) ENCODE_ADD(x0, cons_mark(z0)) -> c(ADD(encArg(x0), mark(encArg(z0)))) ENCODE_ADD(x0, cons_fact(z0)) -> c(ADD(encArg(x0), fact(encArg(z0)))) ENCODE_ADD(x0, cons_if(z0, z1, z2)) -> c(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ADD(x0, cons_zero(z0)) -> c(ADD(encArg(x0), zero(encArg(z0)))) ENCODE_ADD(x0, cons_s(z0)) -> c(ADD(encArg(x0), s(encArg(z0)))) ENCODE_ADD(x0, cons_prod(z0, z1)) -> c(ADD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, cons_p(z0)) -> c(ADD(encArg(x0), p(encArg(z0)))) ENCODE_ADD(x0, cons_add(z0, z1)) -> c(ADD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_ADD(0, x1) -> c(ADD(0, encArg(x1))) ENCODE_ADD(true, x1) -> c(ADD(true, encArg(x1))) ENCODE_ADD(false, x1) -> c(ADD(false, encArg(x1))) ENCODE_ADD(cons_active(z0), x1) -> c(ADD(active(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_mark(z0), x1) -> c(ADD(mark(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_fact(z0), x1) -> c(ADD(fact(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_if(z0, z1, z2), x1) -> c(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_ADD(cons_zero(z0), x1) -> c(ADD(zero(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_s(z0), x1) -> c(ADD(s(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_prod(z0, z1), x1) -> c(ADD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_ADD(cons_p(z0), x1) -> c(ADD(p(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_add(z0, z1), x1) -> c(ADD(add(encArg(z0), encArg(z1)), encArg(x1))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4, c_1 ---------------------------------------- (129) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCARG(cons_active(cons_active(z0))) -> c3(ACTIVE(active(encArg(z0))), ENCARG(cons_active(z0))) by ENCARG(cons_active(cons_active(0))) -> c3(ACTIVE(active(0)), ENCARG(cons_active(0))) ENCARG(cons_active(cons_active(true))) -> c3(ACTIVE(active(true)), ENCARG(cons_active(true))) ENCARG(cons_active(cons_active(false))) -> c3(ACTIVE(active(false)), ENCARG(cons_active(false))) ENCARG(cons_active(cons_active(cons_active(z0)))) -> c3(ACTIVE(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_active(cons_active(cons_mark(z0)))) -> c3(ACTIVE(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_active(cons_active(cons_fact(z0)))) -> c3(ACTIVE(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_active(cons_active(cons_if(z0, z1, z2)))) -> c3(ACTIVE(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_active(cons_zero(z0)))) -> c3(ACTIVE(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_active(cons_active(cons_s(z0)))) -> c3(ACTIVE(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_active(cons_active(cons_prod(z0, z1)))) -> c3(ACTIVE(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_active(cons_active(cons_p(z0)))) -> c3(ACTIVE(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_active(cons_active(cons_add(z0, z1)))) -> c3(ACTIVE(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) ---------------------------------------- (130) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, 0) -> c(PROD(encArg(x0), 0)) ENCODE_PROD(x0, true) -> c(PROD(encArg(x0), true)) ENCODE_PROD(x0, false) -> c(PROD(encArg(x0), false)) ENCODE_PROD(x0, cons_active(z0)) -> c(PROD(encArg(x0), active(encArg(z0)))) ENCODE_PROD(x0, cons_mark(z0)) -> c(PROD(encArg(x0), mark(encArg(z0)))) ENCODE_PROD(x0, cons_fact(z0)) -> c(PROD(encArg(x0), fact(encArg(z0)))) ENCODE_PROD(x0, cons_if(z0, z1, z2)) -> c(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_PROD(x0, cons_zero(z0)) -> c(PROD(encArg(x0), zero(encArg(z0)))) ENCODE_PROD(x0, cons_s(z0)) -> c(PROD(encArg(x0), s(encArg(z0)))) ENCODE_PROD(x0, cons_prod(z0, z1)) -> c(PROD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, cons_p(z0)) -> c(PROD(encArg(x0), p(encArg(z0)))) ENCODE_PROD(x0, cons_add(z0, z1)) -> c(PROD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_PROD(0, x1) -> c(PROD(0, encArg(x1))) ENCODE_PROD(true, x1) -> c(PROD(true, encArg(x1))) ENCODE_PROD(false, x1) -> c(PROD(false, encArg(x1))) ENCODE_PROD(cons_active(z0), x1) -> c(PROD(active(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_mark(z0), x1) -> c(PROD(mark(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_fact(z0), x1) -> c(PROD(fact(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_if(z0, z1, z2), x1) -> c(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_PROD(cons_zero(z0), x1) -> c(PROD(zero(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_s(z0), x1) -> c(PROD(s(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_prod(z0, z1), x1) -> c(PROD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_PROD(cons_p(z0), x1) -> c(PROD(p(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_add(z0, z1), x1) -> c(PROD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_P(cons_active(z0)) -> c(P(active(encArg(z0)))) ENCODE_P(cons_mark(z0)) -> c(P(mark(encArg(z0)))) ENCODE_P(cons_fact(z0)) -> c(P(fact(encArg(z0)))) ENCODE_P(cons_if(z0, z1, z2)) -> c(P(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_P(cons_zero(z0)) -> c(P(zero(encArg(z0)))) ENCODE_P(cons_s(z0)) -> c(P(s(encArg(z0)))) ENCODE_P(cons_prod(z0, z1)) -> c(P(prod(encArg(z0), encArg(z1)))) ENCODE_P(cons_p(z0)) -> c(P(p(encArg(z0)))) ENCODE_P(cons_add(z0, z1)) -> c(P(add(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, 0) -> c(ADD(encArg(x0), 0)) ENCODE_ADD(x0, true) -> c(ADD(encArg(x0), true)) ENCODE_ADD(x0, false) -> c(ADD(encArg(x0), false)) ENCODE_ADD(x0, cons_active(z0)) -> c(ADD(encArg(x0), active(encArg(z0)))) ENCODE_ADD(x0, cons_mark(z0)) -> c(ADD(encArg(x0), mark(encArg(z0)))) ENCODE_ADD(x0, cons_fact(z0)) -> c(ADD(encArg(x0), fact(encArg(z0)))) ENCODE_ADD(x0, cons_if(z0, z1, z2)) -> c(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ADD(x0, cons_zero(z0)) -> c(ADD(encArg(x0), zero(encArg(z0)))) ENCODE_ADD(x0, cons_s(z0)) -> c(ADD(encArg(x0), s(encArg(z0)))) ENCODE_ADD(x0, cons_prod(z0, z1)) -> c(ADD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, cons_p(z0)) -> c(ADD(encArg(x0), p(encArg(z0)))) ENCODE_ADD(x0, cons_add(z0, z1)) -> c(ADD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_ADD(0, x1) -> c(ADD(0, encArg(x1))) ENCODE_ADD(true, x1) -> c(ADD(true, encArg(x1))) ENCODE_ADD(false, x1) -> c(ADD(false, encArg(x1))) ENCODE_ADD(cons_active(z0), x1) -> c(ADD(active(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_mark(z0), x1) -> c(ADD(mark(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_fact(z0), x1) -> c(ADD(fact(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_if(z0, z1, z2), x1) -> c(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_ADD(cons_zero(z0), x1) -> c(ADD(zero(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_s(z0), x1) -> c(ADD(s(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_prod(z0, z1), x1) -> c(ADD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_ADD(cons_p(z0), x1) -> c(ADD(p(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_add(z0, z1), x1) -> c(ADD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCARG(cons_active(cons_active(0))) -> c3(ACTIVE(active(0)), ENCARG(cons_active(0))) ENCARG(cons_active(cons_active(true))) -> c3(ACTIVE(active(true)), ENCARG(cons_active(true))) ENCARG(cons_active(cons_active(false))) -> c3(ACTIVE(active(false)), ENCARG(cons_active(false))) ENCARG(cons_active(cons_active(cons_active(z0)))) -> c3(ACTIVE(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_active(cons_active(cons_mark(z0)))) -> c3(ACTIVE(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_active(cons_active(cons_fact(z0)))) -> c3(ACTIVE(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_active(cons_active(cons_if(z0, z1, z2)))) -> c3(ACTIVE(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_active(cons_zero(z0)))) -> c3(ACTIVE(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_active(cons_active(cons_s(z0)))) -> c3(ACTIVE(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_active(cons_active(cons_prod(z0, z1)))) -> c3(ACTIVE(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_active(cons_active(cons_p(z0)))) -> c3(ACTIVE(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_active(cons_active(cons_add(z0, z1)))) -> c3(ACTIVE(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4, c_1 ---------------------------------------- (131) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing nodes: ENCARG(cons_active(cons_active(true))) -> c3(ACTIVE(active(true)), ENCARG(cons_active(true))) ENCARG(cons_active(cons_active(false))) -> c3(ACTIVE(active(false)), ENCARG(cons_active(false))) ENCARG(cons_active(cons_active(0))) -> c3(ACTIVE(active(0)), ENCARG(cons_active(0))) ---------------------------------------- (132) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, 0) -> c(PROD(encArg(x0), 0)) ENCODE_PROD(x0, true) -> c(PROD(encArg(x0), true)) ENCODE_PROD(x0, false) -> c(PROD(encArg(x0), false)) ENCODE_PROD(x0, cons_active(z0)) -> c(PROD(encArg(x0), active(encArg(z0)))) ENCODE_PROD(x0, cons_mark(z0)) -> c(PROD(encArg(x0), mark(encArg(z0)))) ENCODE_PROD(x0, cons_fact(z0)) -> c(PROD(encArg(x0), fact(encArg(z0)))) ENCODE_PROD(x0, cons_if(z0, z1, z2)) -> c(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_PROD(x0, cons_zero(z0)) -> c(PROD(encArg(x0), zero(encArg(z0)))) ENCODE_PROD(x0, cons_s(z0)) -> c(PROD(encArg(x0), s(encArg(z0)))) ENCODE_PROD(x0, cons_prod(z0, z1)) -> c(PROD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, cons_p(z0)) -> c(PROD(encArg(x0), p(encArg(z0)))) ENCODE_PROD(x0, cons_add(z0, z1)) -> c(PROD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_PROD(0, x1) -> c(PROD(0, encArg(x1))) ENCODE_PROD(true, x1) -> c(PROD(true, encArg(x1))) ENCODE_PROD(false, x1) -> c(PROD(false, encArg(x1))) ENCODE_PROD(cons_active(z0), x1) -> c(PROD(active(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_mark(z0), x1) -> c(PROD(mark(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_fact(z0), x1) -> c(PROD(fact(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_if(z0, z1, z2), x1) -> c(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_PROD(cons_zero(z0), x1) -> c(PROD(zero(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_s(z0), x1) -> c(PROD(s(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_prod(z0, z1), x1) -> c(PROD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_PROD(cons_p(z0), x1) -> c(PROD(p(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_add(z0, z1), x1) -> c(PROD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_P(cons_active(z0)) -> c(P(active(encArg(z0)))) ENCODE_P(cons_mark(z0)) -> c(P(mark(encArg(z0)))) ENCODE_P(cons_fact(z0)) -> c(P(fact(encArg(z0)))) ENCODE_P(cons_if(z0, z1, z2)) -> c(P(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_P(cons_zero(z0)) -> c(P(zero(encArg(z0)))) ENCODE_P(cons_s(z0)) -> c(P(s(encArg(z0)))) ENCODE_P(cons_prod(z0, z1)) -> c(P(prod(encArg(z0), encArg(z1)))) ENCODE_P(cons_p(z0)) -> c(P(p(encArg(z0)))) ENCODE_P(cons_add(z0, z1)) -> c(P(add(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, 0) -> c(ADD(encArg(x0), 0)) ENCODE_ADD(x0, true) -> c(ADD(encArg(x0), true)) ENCODE_ADD(x0, false) -> c(ADD(encArg(x0), false)) ENCODE_ADD(x0, cons_active(z0)) -> c(ADD(encArg(x0), active(encArg(z0)))) ENCODE_ADD(x0, cons_mark(z0)) -> c(ADD(encArg(x0), mark(encArg(z0)))) ENCODE_ADD(x0, cons_fact(z0)) -> c(ADD(encArg(x0), fact(encArg(z0)))) ENCODE_ADD(x0, cons_if(z0, z1, z2)) -> c(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ADD(x0, cons_zero(z0)) -> c(ADD(encArg(x0), zero(encArg(z0)))) ENCODE_ADD(x0, cons_s(z0)) -> c(ADD(encArg(x0), s(encArg(z0)))) ENCODE_ADD(x0, cons_prod(z0, z1)) -> c(ADD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, cons_p(z0)) -> c(ADD(encArg(x0), p(encArg(z0)))) ENCODE_ADD(x0, cons_add(z0, z1)) -> c(ADD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_ADD(0, x1) -> c(ADD(0, encArg(x1))) ENCODE_ADD(true, x1) -> c(ADD(true, encArg(x1))) ENCODE_ADD(false, x1) -> c(ADD(false, encArg(x1))) ENCODE_ADD(cons_active(z0), x1) -> c(ADD(active(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_mark(z0), x1) -> c(ADD(mark(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_fact(z0), x1) -> c(ADD(fact(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_if(z0, z1, z2), x1) -> c(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_ADD(cons_zero(z0), x1) -> c(ADD(zero(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_s(z0), x1) -> c(ADD(s(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_prod(z0, z1), x1) -> c(ADD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_ADD(cons_p(z0), x1) -> c(ADD(p(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_add(z0, z1), x1) -> c(ADD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCARG(cons_active(cons_active(cons_active(z0)))) -> c3(ACTIVE(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_active(cons_active(cons_mark(z0)))) -> c3(ACTIVE(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_active(cons_active(cons_fact(z0)))) -> c3(ACTIVE(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_active(cons_active(cons_if(z0, z1, z2)))) -> c3(ACTIVE(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_active(cons_zero(z0)))) -> c3(ACTIVE(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_active(cons_active(cons_s(z0)))) -> c3(ACTIVE(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_active(cons_active(cons_prod(z0, z1)))) -> c3(ACTIVE(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_active(cons_active(cons_p(z0)))) -> c3(ACTIVE(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_active(cons_active(cons_add(z0, z1)))) -> c3(ACTIVE(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4, c_1 ---------------------------------------- (133) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCARG(cons_active(cons_mark(z0))) -> c3(ACTIVE(mark(encArg(z0))), ENCARG(cons_mark(z0))) by ENCARG(cons_active(cons_mark(0))) -> c3(ACTIVE(mark(0)), ENCARG(cons_mark(0))) ENCARG(cons_active(cons_mark(true))) -> c3(ACTIVE(mark(true)), ENCARG(cons_mark(true))) ENCARG(cons_active(cons_mark(false))) -> c3(ACTIVE(mark(false)), ENCARG(cons_mark(false))) ENCARG(cons_active(cons_mark(cons_active(z0)))) -> c3(ACTIVE(mark(active(encArg(z0)))), ENCARG(cons_mark(cons_active(z0)))) ENCARG(cons_active(cons_mark(cons_mark(z0)))) -> c3(ACTIVE(mark(mark(encArg(z0)))), ENCARG(cons_mark(cons_mark(z0)))) ENCARG(cons_active(cons_mark(cons_fact(z0)))) -> c3(ACTIVE(mark(fact(encArg(z0)))), ENCARG(cons_mark(cons_fact(z0)))) ENCARG(cons_active(cons_mark(cons_if(z0, z1, z2)))) -> c3(ACTIVE(mark(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_mark(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_mark(cons_zero(z0)))) -> c3(ACTIVE(mark(zero(encArg(z0)))), ENCARG(cons_mark(cons_zero(z0)))) ENCARG(cons_active(cons_mark(cons_s(z0)))) -> c3(ACTIVE(mark(s(encArg(z0)))), ENCARG(cons_mark(cons_s(z0)))) ENCARG(cons_active(cons_mark(cons_prod(z0, z1)))) -> c3(ACTIVE(mark(prod(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_prod(z0, z1)))) ENCARG(cons_active(cons_mark(cons_p(z0)))) -> c3(ACTIVE(mark(p(encArg(z0)))), ENCARG(cons_mark(cons_p(z0)))) ENCARG(cons_active(cons_mark(cons_add(z0, z1)))) -> c3(ACTIVE(mark(add(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_add(z0, z1)))) ---------------------------------------- (134) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, 0) -> c(PROD(encArg(x0), 0)) ENCODE_PROD(x0, true) -> c(PROD(encArg(x0), true)) ENCODE_PROD(x0, false) -> c(PROD(encArg(x0), false)) ENCODE_PROD(x0, cons_active(z0)) -> c(PROD(encArg(x0), active(encArg(z0)))) ENCODE_PROD(x0, cons_mark(z0)) -> c(PROD(encArg(x0), mark(encArg(z0)))) ENCODE_PROD(x0, cons_fact(z0)) -> c(PROD(encArg(x0), fact(encArg(z0)))) ENCODE_PROD(x0, cons_if(z0, z1, z2)) -> c(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_PROD(x0, cons_zero(z0)) -> c(PROD(encArg(x0), zero(encArg(z0)))) ENCODE_PROD(x0, cons_s(z0)) -> c(PROD(encArg(x0), s(encArg(z0)))) ENCODE_PROD(x0, cons_prod(z0, z1)) -> c(PROD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, cons_p(z0)) -> c(PROD(encArg(x0), p(encArg(z0)))) ENCODE_PROD(x0, cons_add(z0, z1)) -> c(PROD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_PROD(0, x1) -> c(PROD(0, encArg(x1))) ENCODE_PROD(true, x1) -> c(PROD(true, encArg(x1))) ENCODE_PROD(false, x1) -> c(PROD(false, encArg(x1))) ENCODE_PROD(cons_active(z0), x1) -> c(PROD(active(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_mark(z0), x1) -> c(PROD(mark(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_fact(z0), x1) -> c(PROD(fact(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_if(z0, z1, z2), x1) -> c(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_PROD(cons_zero(z0), x1) -> c(PROD(zero(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_s(z0), x1) -> c(PROD(s(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_prod(z0, z1), x1) -> c(PROD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_PROD(cons_p(z0), x1) -> c(PROD(p(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_add(z0, z1), x1) -> c(PROD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_P(cons_active(z0)) -> c(P(active(encArg(z0)))) ENCODE_P(cons_mark(z0)) -> c(P(mark(encArg(z0)))) ENCODE_P(cons_fact(z0)) -> c(P(fact(encArg(z0)))) ENCODE_P(cons_if(z0, z1, z2)) -> c(P(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_P(cons_zero(z0)) -> c(P(zero(encArg(z0)))) ENCODE_P(cons_s(z0)) -> c(P(s(encArg(z0)))) ENCODE_P(cons_prod(z0, z1)) -> c(P(prod(encArg(z0), encArg(z1)))) ENCODE_P(cons_p(z0)) -> c(P(p(encArg(z0)))) ENCODE_P(cons_add(z0, z1)) -> c(P(add(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, 0) -> c(ADD(encArg(x0), 0)) ENCODE_ADD(x0, true) -> c(ADD(encArg(x0), true)) ENCODE_ADD(x0, false) -> c(ADD(encArg(x0), false)) ENCODE_ADD(x0, cons_active(z0)) -> c(ADD(encArg(x0), active(encArg(z0)))) ENCODE_ADD(x0, cons_mark(z0)) -> c(ADD(encArg(x0), mark(encArg(z0)))) ENCODE_ADD(x0, cons_fact(z0)) -> c(ADD(encArg(x0), fact(encArg(z0)))) ENCODE_ADD(x0, cons_if(z0, z1, z2)) -> c(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ADD(x0, cons_zero(z0)) -> c(ADD(encArg(x0), zero(encArg(z0)))) ENCODE_ADD(x0, cons_s(z0)) -> c(ADD(encArg(x0), s(encArg(z0)))) ENCODE_ADD(x0, cons_prod(z0, z1)) -> c(ADD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, cons_p(z0)) -> c(ADD(encArg(x0), p(encArg(z0)))) ENCODE_ADD(x0, cons_add(z0, z1)) -> c(ADD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_ADD(0, x1) -> c(ADD(0, encArg(x1))) ENCODE_ADD(true, x1) -> c(ADD(true, encArg(x1))) ENCODE_ADD(false, x1) -> c(ADD(false, encArg(x1))) ENCODE_ADD(cons_active(z0), x1) -> c(ADD(active(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_mark(z0), x1) -> c(ADD(mark(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_fact(z0), x1) -> c(ADD(fact(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_if(z0, z1, z2), x1) -> c(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_ADD(cons_zero(z0), x1) -> c(ADD(zero(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_s(z0), x1) -> c(ADD(s(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_prod(z0, z1), x1) -> c(ADD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_ADD(cons_p(z0), x1) -> c(ADD(p(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_add(z0, z1), x1) -> c(ADD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCARG(cons_active(cons_active(cons_active(z0)))) -> c3(ACTIVE(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_active(cons_active(cons_mark(z0)))) -> c3(ACTIVE(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_active(cons_active(cons_fact(z0)))) -> c3(ACTIVE(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_active(cons_active(cons_if(z0, z1, z2)))) -> c3(ACTIVE(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_active(cons_zero(z0)))) -> c3(ACTIVE(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_active(cons_active(cons_s(z0)))) -> c3(ACTIVE(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_active(cons_active(cons_prod(z0, z1)))) -> c3(ACTIVE(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_active(cons_active(cons_p(z0)))) -> c3(ACTIVE(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_active(cons_active(cons_add(z0, z1)))) -> c3(ACTIVE(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(0))) -> c3(ACTIVE(mark(0)), ENCARG(cons_mark(0))) ENCARG(cons_active(cons_mark(true))) -> c3(ACTIVE(mark(true)), ENCARG(cons_mark(true))) ENCARG(cons_active(cons_mark(false))) -> c3(ACTIVE(mark(false)), ENCARG(cons_mark(false))) ENCARG(cons_active(cons_mark(cons_active(z0)))) -> c3(ACTIVE(mark(active(encArg(z0)))), ENCARG(cons_mark(cons_active(z0)))) ENCARG(cons_active(cons_mark(cons_mark(z0)))) -> c3(ACTIVE(mark(mark(encArg(z0)))), ENCARG(cons_mark(cons_mark(z0)))) ENCARG(cons_active(cons_mark(cons_fact(z0)))) -> c3(ACTIVE(mark(fact(encArg(z0)))), ENCARG(cons_mark(cons_fact(z0)))) ENCARG(cons_active(cons_mark(cons_if(z0, z1, z2)))) -> c3(ACTIVE(mark(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_mark(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_mark(cons_zero(z0)))) -> c3(ACTIVE(mark(zero(encArg(z0)))), ENCARG(cons_mark(cons_zero(z0)))) ENCARG(cons_active(cons_mark(cons_s(z0)))) -> c3(ACTIVE(mark(s(encArg(z0)))), ENCARG(cons_mark(cons_s(z0)))) ENCARG(cons_active(cons_mark(cons_prod(z0, z1)))) -> c3(ACTIVE(mark(prod(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_prod(z0, z1)))) ENCARG(cons_active(cons_mark(cons_p(z0)))) -> c3(ACTIVE(mark(p(encArg(z0)))), ENCARG(cons_mark(cons_p(z0)))) ENCARG(cons_active(cons_mark(cons_add(z0, z1)))) -> c3(ACTIVE(mark(add(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_add(z0, z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4, c_1 ---------------------------------------- (135) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (136) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, 0) -> c(PROD(encArg(x0), 0)) ENCODE_PROD(x0, true) -> c(PROD(encArg(x0), true)) ENCODE_PROD(x0, false) -> c(PROD(encArg(x0), false)) ENCODE_PROD(x0, cons_active(z0)) -> c(PROD(encArg(x0), active(encArg(z0)))) ENCODE_PROD(x0, cons_mark(z0)) -> c(PROD(encArg(x0), mark(encArg(z0)))) ENCODE_PROD(x0, cons_fact(z0)) -> c(PROD(encArg(x0), fact(encArg(z0)))) ENCODE_PROD(x0, cons_if(z0, z1, z2)) -> c(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_PROD(x0, cons_zero(z0)) -> c(PROD(encArg(x0), zero(encArg(z0)))) ENCODE_PROD(x0, cons_s(z0)) -> c(PROD(encArg(x0), s(encArg(z0)))) ENCODE_PROD(x0, cons_prod(z0, z1)) -> c(PROD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, cons_p(z0)) -> c(PROD(encArg(x0), p(encArg(z0)))) ENCODE_PROD(x0, cons_add(z0, z1)) -> c(PROD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_PROD(0, x1) -> c(PROD(0, encArg(x1))) ENCODE_PROD(true, x1) -> c(PROD(true, encArg(x1))) ENCODE_PROD(false, x1) -> c(PROD(false, encArg(x1))) ENCODE_PROD(cons_active(z0), x1) -> c(PROD(active(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_mark(z0), x1) -> c(PROD(mark(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_fact(z0), x1) -> c(PROD(fact(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_if(z0, z1, z2), x1) -> c(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_PROD(cons_zero(z0), x1) -> c(PROD(zero(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_s(z0), x1) -> c(PROD(s(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_prod(z0, z1), x1) -> c(PROD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_PROD(cons_p(z0), x1) -> c(PROD(p(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_add(z0, z1), x1) -> c(PROD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_P(cons_active(z0)) -> c(P(active(encArg(z0)))) ENCODE_P(cons_mark(z0)) -> c(P(mark(encArg(z0)))) ENCODE_P(cons_fact(z0)) -> c(P(fact(encArg(z0)))) ENCODE_P(cons_if(z0, z1, z2)) -> c(P(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_P(cons_zero(z0)) -> c(P(zero(encArg(z0)))) ENCODE_P(cons_s(z0)) -> c(P(s(encArg(z0)))) ENCODE_P(cons_prod(z0, z1)) -> c(P(prod(encArg(z0), encArg(z1)))) ENCODE_P(cons_p(z0)) -> c(P(p(encArg(z0)))) ENCODE_P(cons_add(z0, z1)) -> c(P(add(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, 0) -> c(ADD(encArg(x0), 0)) ENCODE_ADD(x0, true) -> c(ADD(encArg(x0), true)) ENCODE_ADD(x0, false) -> c(ADD(encArg(x0), false)) ENCODE_ADD(x0, cons_active(z0)) -> c(ADD(encArg(x0), active(encArg(z0)))) ENCODE_ADD(x0, cons_mark(z0)) -> c(ADD(encArg(x0), mark(encArg(z0)))) ENCODE_ADD(x0, cons_fact(z0)) -> c(ADD(encArg(x0), fact(encArg(z0)))) ENCODE_ADD(x0, cons_if(z0, z1, z2)) -> c(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ADD(x0, cons_zero(z0)) -> c(ADD(encArg(x0), zero(encArg(z0)))) ENCODE_ADD(x0, cons_s(z0)) -> c(ADD(encArg(x0), s(encArg(z0)))) ENCODE_ADD(x0, cons_prod(z0, z1)) -> c(ADD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, cons_p(z0)) -> c(ADD(encArg(x0), p(encArg(z0)))) ENCODE_ADD(x0, cons_add(z0, z1)) -> c(ADD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_ADD(0, x1) -> c(ADD(0, encArg(x1))) ENCODE_ADD(true, x1) -> c(ADD(true, encArg(x1))) ENCODE_ADD(false, x1) -> c(ADD(false, encArg(x1))) ENCODE_ADD(cons_active(z0), x1) -> c(ADD(active(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_mark(z0), x1) -> c(ADD(mark(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_fact(z0), x1) -> c(ADD(fact(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_if(z0, z1, z2), x1) -> c(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_ADD(cons_zero(z0), x1) -> c(ADD(zero(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_s(z0), x1) -> c(ADD(s(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_prod(z0, z1), x1) -> c(ADD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_ADD(cons_p(z0), x1) -> c(ADD(p(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_add(z0, z1), x1) -> c(ADD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCARG(cons_active(cons_active(cons_active(z0)))) -> c3(ACTIVE(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_active(cons_active(cons_mark(z0)))) -> c3(ACTIVE(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_active(cons_active(cons_fact(z0)))) -> c3(ACTIVE(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_active(cons_active(cons_if(z0, z1, z2)))) -> c3(ACTIVE(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_active(cons_zero(z0)))) -> c3(ACTIVE(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_active(cons_active(cons_s(z0)))) -> c3(ACTIVE(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_active(cons_active(cons_prod(z0, z1)))) -> c3(ACTIVE(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_active(cons_active(cons_p(z0)))) -> c3(ACTIVE(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_active(cons_active(cons_add(z0, z1)))) -> c3(ACTIVE(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(cons_active(z0)))) -> c3(ACTIVE(mark(active(encArg(z0)))), ENCARG(cons_mark(cons_active(z0)))) ENCARG(cons_active(cons_mark(cons_mark(z0)))) -> c3(ACTIVE(mark(mark(encArg(z0)))), ENCARG(cons_mark(cons_mark(z0)))) ENCARG(cons_active(cons_mark(cons_fact(z0)))) -> c3(ACTIVE(mark(fact(encArg(z0)))), ENCARG(cons_mark(cons_fact(z0)))) ENCARG(cons_active(cons_mark(cons_if(z0, z1, z2)))) -> c3(ACTIVE(mark(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_mark(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_mark(cons_zero(z0)))) -> c3(ACTIVE(mark(zero(encArg(z0)))), ENCARG(cons_mark(cons_zero(z0)))) ENCARG(cons_active(cons_mark(cons_s(z0)))) -> c3(ACTIVE(mark(s(encArg(z0)))), ENCARG(cons_mark(cons_s(z0)))) ENCARG(cons_active(cons_mark(cons_prod(z0, z1)))) -> c3(ACTIVE(mark(prod(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_prod(z0, z1)))) ENCARG(cons_active(cons_mark(cons_p(z0)))) -> c3(ACTIVE(mark(p(encArg(z0)))), ENCARG(cons_mark(cons_p(z0)))) ENCARG(cons_active(cons_mark(cons_add(z0, z1)))) -> c3(ACTIVE(mark(add(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(0))) -> c1(ACTIVE(mark(0))) ENCARG(cons_active(cons_mark(0))) -> c1(ENCARG(cons_mark(0))) ENCARG(cons_active(cons_mark(true))) -> c1(ACTIVE(mark(true))) ENCARG(cons_active(cons_mark(true))) -> c1(ENCARG(cons_mark(true))) ENCARG(cons_active(cons_mark(false))) -> c1(ACTIVE(mark(false))) ENCARG(cons_active(cons_mark(false))) -> c1(ENCARG(cons_mark(false))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4, c_1, c1_1 ---------------------------------------- (137) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCARG(cons_active(cons_if(z0, z1, z2))) -> c3(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) by ENCARG(cons_active(cons_if(x0, x1, 0))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), 0)), ENCARG(cons_if(x0, x1, 0))) ENCARG(cons_active(cons_if(x0, x1, true))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), true)), ENCARG(cons_if(x0, x1, true))) ENCARG(cons_active(cons_if(x0, x1, false))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), false)), ENCARG(cons_if(x0, x1, false))) ENCARG(cons_active(cons_if(x0, x1, cons_active(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), active(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_active(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_mark(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), mark(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_mark(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_fact(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), fact(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_fact(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_if(z0, z1, z2)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_if(x0, x1, cons_zero(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), zero(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_zero(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_s(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), s(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_s(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_prod(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_prod(z0, z1)))) ENCARG(cons_active(cons_if(x0, x1, cons_p(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), p(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_p(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_add(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_add(z0, z1)))) ENCARG(cons_active(cons_if(x0, 0, x2))) -> c3(ACTIVE(if(encArg(x0), 0, encArg(x2))), ENCARG(cons_if(x0, 0, x2))) ENCARG(cons_active(cons_if(x0, true, x2))) -> c3(ACTIVE(if(encArg(x0), true, encArg(x2))), ENCARG(cons_if(x0, true, x2))) ENCARG(cons_active(cons_if(x0, false, x2))) -> c3(ACTIVE(if(encArg(x0), false, encArg(x2))), ENCARG(cons_if(x0, false, x2))) ENCARG(cons_active(cons_if(x0, cons_active(z0), x2))) -> c3(ACTIVE(if(encArg(x0), active(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_active(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_mark(z0), x2))) -> c3(ACTIVE(if(encArg(x0), mark(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_mark(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_fact(z0), x2))) -> c3(ACTIVE(if(encArg(x0), fact(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_fact(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_if(z0, z1, z2), x2))) -> c3(ACTIVE(if(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))), ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2))) ENCARG(cons_active(cons_if(x0, cons_zero(z0), x2))) -> c3(ACTIVE(if(encArg(x0), zero(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_zero(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_s(z0), x2))) -> c3(ACTIVE(if(encArg(x0), s(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_s(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_prod(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_prod(z0, z1), x2))) ENCARG(cons_active(cons_if(x0, cons_p(z0), x2))) -> c3(ACTIVE(if(encArg(x0), p(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_p(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_add(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_add(z0, z1), x2))) ENCARG(cons_active(cons_if(0, x1, x2))) -> c3(ACTIVE(if(0, encArg(x1), encArg(x2))), ENCARG(cons_if(0, x1, x2))) ENCARG(cons_active(cons_if(true, x1, x2))) -> c3(ACTIVE(if(true, encArg(x1), encArg(x2))), ENCARG(cons_if(true, x1, x2))) ENCARG(cons_active(cons_if(false, x1, x2))) -> c3(ACTIVE(if(false, encArg(x1), encArg(x2))), ENCARG(cons_if(false, x1, x2))) ENCARG(cons_active(cons_if(cons_active(z0), x1, x2))) -> c3(ACTIVE(if(active(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_active(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_mark(z0), x1, x2))) -> c3(ACTIVE(if(mark(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_mark(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_fact(z0), x1, x2))) -> c3(ACTIVE(if(fact(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_fact(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_if(z0, z1, z2), x1, x2))) -> c3(ACTIVE(if(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2))) ENCARG(cons_active(cons_if(cons_zero(z0), x1, x2))) -> c3(ACTIVE(if(zero(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_zero(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_s(z0), x1, x2))) -> c3(ACTIVE(if(s(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_s(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_prod(z0, z1), x1, x2))) -> c3(ACTIVE(if(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_prod(z0, z1), x1, x2))) ENCARG(cons_active(cons_if(cons_p(z0), x1, x2))) -> c3(ACTIVE(if(p(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_p(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_add(z0, z1), x1, x2))) -> c3(ACTIVE(if(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_add(z0, z1), x1, x2))) ---------------------------------------- (138) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, 0) -> c(PROD(encArg(x0), 0)) ENCODE_PROD(x0, true) -> c(PROD(encArg(x0), true)) ENCODE_PROD(x0, false) -> c(PROD(encArg(x0), false)) ENCODE_PROD(x0, cons_active(z0)) -> c(PROD(encArg(x0), active(encArg(z0)))) ENCODE_PROD(x0, cons_mark(z0)) -> c(PROD(encArg(x0), mark(encArg(z0)))) ENCODE_PROD(x0, cons_fact(z0)) -> c(PROD(encArg(x0), fact(encArg(z0)))) ENCODE_PROD(x0, cons_if(z0, z1, z2)) -> c(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_PROD(x0, cons_zero(z0)) -> c(PROD(encArg(x0), zero(encArg(z0)))) ENCODE_PROD(x0, cons_s(z0)) -> c(PROD(encArg(x0), s(encArg(z0)))) ENCODE_PROD(x0, cons_prod(z0, z1)) -> c(PROD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, cons_p(z0)) -> c(PROD(encArg(x0), p(encArg(z0)))) ENCODE_PROD(x0, cons_add(z0, z1)) -> c(PROD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_PROD(0, x1) -> c(PROD(0, encArg(x1))) ENCODE_PROD(true, x1) -> c(PROD(true, encArg(x1))) ENCODE_PROD(false, x1) -> c(PROD(false, encArg(x1))) ENCODE_PROD(cons_active(z0), x1) -> c(PROD(active(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_mark(z0), x1) -> c(PROD(mark(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_fact(z0), x1) -> c(PROD(fact(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_if(z0, z1, z2), x1) -> c(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_PROD(cons_zero(z0), x1) -> c(PROD(zero(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_s(z0), x1) -> c(PROD(s(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_prod(z0, z1), x1) -> c(PROD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_PROD(cons_p(z0), x1) -> c(PROD(p(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_add(z0, z1), x1) -> c(PROD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_P(cons_active(z0)) -> c(P(active(encArg(z0)))) ENCODE_P(cons_mark(z0)) -> c(P(mark(encArg(z0)))) ENCODE_P(cons_fact(z0)) -> c(P(fact(encArg(z0)))) ENCODE_P(cons_if(z0, z1, z2)) -> c(P(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_P(cons_zero(z0)) -> c(P(zero(encArg(z0)))) ENCODE_P(cons_s(z0)) -> c(P(s(encArg(z0)))) ENCODE_P(cons_prod(z0, z1)) -> c(P(prod(encArg(z0), encArg(z1)))) ENCODE_P(cons_p(z0)) -> c(P(p(encArg(z0)))) ENCODE_P(cons_add(z0, z1)) -> c(P(add(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, 0) -> c(ADD(encArg(x0), 0)) ENCODE_ADD(x0, true) -> c(ADD(encArg(x0), true)) ENCODE_ADD(x0, false) -> c(ADD(encArg(x0), false)) ENCODE_ADD(x0, cons_active(z0)) -> c(ADD(encArg(x0), active(encArg(z0)))) ENCODE_ADD(x0, cons_mark(z0)) -> c(ADD(encArg(x0), mark(encArg(z0)))) ENCODE_ADD(x0, cons_fact(z0)) -> c(ADD(encArg(x0), fact(encArg(z0)))) ENCODE_ADD(x0, cons_if(z0, z1, z2)) -> c(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ADD(x0, cons_zero(z0)) -> c(ADD(encArg(x0), zero(encArg(z0)))) ENCODE_ADD(x0, cons_s(z0)) -> c(ADD(encArg(x0), s(encArg(z0)))) ENCODE_ADD(x0, cons_prod(z0, z1)) -> c(ADD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, cons_p(z0)) -> c(ADD(encArg(x0), p(encArg(z0)))) ENCODE_ADD(x0, cons_add(z0, z1)) -> c(ADD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_ADD(0, x1) -> c(ADD(0, encArg(x1))) ENCODE_ADD(true, x1) -> c(ADD(true, encArg(x1))) ENCODE_ADD(false, x1) -> c(ADD(false, encArg(x1))) ENCODE_ADD(cons_active(z0), x1) -> c(ADD(active(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_mark(z0), x1) -> c(ADD(mark(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_fact(z0), x1) -> c(ADD(fact(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_if(z0, z1, z2), x1) -> c(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_ADD(cons_zero(z0), x1) -> c(ADD(zero(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_s(z0), x1) -> c(ADD(s(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_prod(z0, z1), x1) -> c(ADD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_ADD(cons_p(z0), x1) -> c(ADD(p(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_add(z0, z1), x1) -> c(ADD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCARG(cons_active(cons_active(cons_active(z0)))) -> c3(ACTIVE(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_active(cons_active(cons_mark(z0)))) -> c3(ACTIVE(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_active(cons_active(cons_fact(z0)))) -> c3(ACTIVE(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_active(cons_active(cons_if(z0, z1, z2)))) -> c3(ACTIVE(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_active(cons_zero(z0)))) -> c3(ACTIVE(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_active(cons_active(cons_s(z0)))) -> c3(ACTIVE(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_active(cons_active(cons_prod(z0, z1)))) -> c3(ACTIVE(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_active(cons_active(cons_p(z0)))) -> c3(ACTIVE(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_active(cons_active(cons_add(z0, z1)))) -> c3(ACTIVE(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(cons_active(z0)))) -> c3(ACTIVE(mark(active(encArg(z0)))), ENCARG(cons_mark(cons_active(z0)))) ENCARG(cons_active(cons_mark(cons_mark(z0)))) -> c3(ACTIVE(mark(mark(encArg(z0)))), ENCARG(cons_mark(cons_mark(z0)))) ENCARG(cons_active(cons_mark(cons_fact(z0)))) -> c3(ACTIVE(mark(fact(encArg(z0)))), ENCARG(cons_mark(cons_fact(z0)))) ENCARG(cons_active(cons_mark(cons_if(z0, z1, z2)))) -> c3(ACTIVE(mark(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_mark(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_mark(cons_zero(z0)))) -> c3(ACTIVE(mark(zero(encArg(z0)))), ENCARG(cons_mark(cons_zero(z0)))) ENCARG(cons_active(cons_mark(cons_s(z0)))) -> c3(ACTIVE(mark(s(encArg(z0)))), ENCARG(cons_mark(cons_s(z0)))) ENCARG(cons_active(cons_mark(cons_prod(z0, z1)))) -> c3(ACTIVE(mark(prod(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_prod(z0, z1)))) ENCARG(cons_active(cons_mark(cons_p(z0)))) -> c3(ACTIVE(mark(p(encArg(z0)))), ENCARG(cons_mark(cons_p(z0)))) ENCARG(cons_active(cons_mark(cons_add(z0, z1)))) -> c3(ACTIVE(mark(add(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(0))) -> c1(ACTIVE(mark(0))) ENCARG(cons_active(cons_mark(0))) -> c1(ENCARG(cons_mark(0))) ENCARG(cons_active(cons_mark(true))) -> c1(ACTIVE(mark(true))) ENCARG(cons_active(cons_mark(true))) -> c1(ENCARG(cons_mark(true))) ENCARG(cons_active(cons_mark(false))) -> c1(ACTIVE(mark(false))) ENCARG(cons_active(cons_mark(false))) -> c1(ENCARG(cons_mark(false))) ENCARG(cons_active(cons_if(x0, x1, 0))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), 0)), ENCARG(cons_if(x0, x1, 0))) ENCARG(cons_active(cons_if(x0, x1, true))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), true)), ENCARG(cons_if(x0, x1, true))) ENCARG(cons_active(cons_if(x0, x1, false))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), false)), ENCARG(cons_if(x0, x1, false))) ENCARG(cons_active(cons_if(x0, x1, cons_active(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), active(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_active(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_mark(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), mark(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_mark(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_fact(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), fact(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_fact(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_if(z0, z1, z2)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_if(x0, x1, cons_zero(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), zero(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_zero(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_s(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), s(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_s(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_prod(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_prod(z0, z1)))) ENCARG(cons_active(cons_if(x0, x1, cons_p(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), p(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_p(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_add(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_add(z0, z1)))) ENCARG(cons_active(cons_if(x0, 0, x2))) -> c3(ACTIVE(if(encArg(x0), 0, encArg(x2))), ENCARG(cons_if(x0, 0, x2))) ENCARG(cons_active(cons_if(x0, true, x2))) -> c3(ACTIVE(if(encArg(x0), true, encArg(x2))), ENCARG(cons_if(x0, true, x2))) ENCARG(cons_active(cons_if(x0, false, x2))) -> c3(ACTIVE(if(encArg(x0), false, encArg(x2))), ENCARG(cons_if(x0, false, x2))) ENCARG(cons_active(cons_if(x0, cons_active(z0), x2))) -> c3(ACTIVE(if(encArg(x0), active(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_active(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_mark(z0), x2))) -> c3(ACTIVE(if(encArg(x0), mark(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_mark(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_fact(z0), x2))) -> c3(ACTIVE(if(encArg(x0), fact(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_fact(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_if(z0, z1, z2), x2))) -> c3(ACTIVE(if(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))), ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2))) ENCARG(cons_active(cons_if(x0, cons_zero(z0), x2))) -> c3(ACTIVE(if(encArg(x0), zero(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_zero(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_s(z0), x2))) -> c3(ACTIVE(if(encArg(x0), s(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_s(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_prod(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_prod(z0, z1), x2))) ENCARG(cons_active(cons_if(x0, cons_p(z0), x2))) -> c3(ACTIVE(if(encArg(x0), p(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_p(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_add(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_add(z0, z1), x2))) ENCARG(cons_active(cons_if(0, x1, x2))) -> c3(ACTIVE(if(0, encArg(x1), encArg(x2))), ENCARG(cons_if(0, x1, x2))) ENCARG(cons_active(cons_if(true, x1, x2))) -> c3(ACTIVE(if(true, encArg(x1), encArg(x2))), ENCARG(cons_if(true, x1, x2))) ENCARG(cons_active(cons_if(false, x1, x2))) -> c3(ACTIVE(if(false, encArg(x1), encArg(x2))), ENCARG(cons_if(false, x1, x2))) ENCARG(cons_active(cons_if(cons_active(z0), x1, x2))) -> c3(ACTIVE(if(active(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_active(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_mark(z0), x1, x2))) -> c3(ACTIVE(if(mark(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_mark(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_fact(z0), x1, x2))) -> c3(ACTIVE(if(fact(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_fact(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_if(z0, z1, z2), x1, x2))) -> c3(ACTIVE(if(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2))) ENCARG(cons_active(cons_if(cons_zero(z0), x1, x2))) -> c3(ACTIVE(if(zero(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_zero(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_s(z0), x1, x2))) -> c3(ACTIVE(if(s(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_s(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_prod(z0, z1), x1, x2))) -> c3(ACTIVE(if(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_prod(z0, z1), x1, x2))) ENCARG(cons_active(cons_if(cons_p(z0), x1, x2))) -> c3(ACTIVE(if(p(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_p(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_add(z0, z1), x1, x2))) -> c3(ACTIVE(if(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_add(z0, z1), x1, x2))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4, c_1, c1_1 ---------------------------------------- (139) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCARG(cons_active(cons_zero(z0))) -> c3(ACTIVE(zero(encArg(z0))), ENCARG(cons_zero(z0))) by ENCARG(cons_active(cons_zero(0))) -> c3(ACTIVE(zero(0)), ENCARG(cons_zero(0))) ENCARG(cons_active(cons_zero(true))) -> c3(ACTIVE(zero(true)), ENCARG(cons_zero(true))) ENCARG(cons_active(cons_zero(false))) -> c3(ACTIVE(zero(false)), ENCARG(cons_zero(false))) ENCARG(cons_active(cons_zero(cons_active(z0)))) -> c3(ACTIVE(zero(active(encArg(z0)))), ENCARG(cons_zero(cons_active(z0)))) ENCARG(cons_active(cons_zero(cons_mark(z0)))) -> c3(ACTIVE(zero(mark(encArg(z0)))), ENCARG(cons_zero(cons_mark(z0)))) ENCARG(cons_active(cons_zero(cons_fact(z0)))) -> c3(ACTIVE(zero(fact(encArg(z0)))), ENCARG(cons_zero(cons_fact(z0)))) ENCARG(cons_active(cons_zero(cons_if(z0, z1, z2)))) -> c3(ACTIVE(zero(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_zero(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_zero(cons_zero(z0)))) -> c3(ACTIVE(zero(zero(encArg(z0)))), ENCARG(cons_zero(cons_zero(z0)))) ENCARG(cons_active(cons_zero(cons_s(z0)))) -> c3(ACTIVE(zero(s(encArg(z0)))), ENCARG(cons_zero(cons_s(z0)))) ENCARG(cons_active(cons_zero(cons_prod(z0, z1)))) -> c3(ACTIVE(zero(prod(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_prod(z0, z1)))) ENCARG(cons_active(cons_zero(cons_p(z0)))) -> c3(ACTIVE(zero(p(encArg(z0)))), ENCARG(cons_zero(cons_p(z0)))) ENCARG(cons_active(cons_zero(cons_add(z0, z1)))) -> c3(ACTIVE(zero(add(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_add(z0, z1)))) ---------------------------------------- (140) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, 0) -> c(PROD(encArg(x0), 0)) ENCODE_PROD(x0, true) -> c(PROD(encArg(x0), true)) ENCODE_PROD(x0, false) -> c(PROD(encArg(x0), false)) ENCODE_PROD(x0, cons_active(z0)) -> c(PROD(encArg(x0), active(encArg(z0)))) ENCODE_PROD(x0, cons_mark(z0)) -> c(PROD(encArg(x0), mark(encArg(z0)))) ENCODE_PROD(x0, cons_fact(z0)) -> c(PROD(encArg(x0), fact(encArg(z0)))) ENCODE_PROD(x0, cons_if(z0, z1, z2)) -> c(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_PROD(x0, cons_zero(z0)) -> c(PROD(encArg(x0), zero(encArg(z0)))) ENCODE_PROD(x0, cons_s(z0)) -> c(PROD(encArg(x0), s(encArg(z0)))) ENCODE_PROD(x0, cons_prod(z0, z1)) -> c(PROD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, cons_p(z0)) -> c(PROD(encArg(x0), p(encArg(z0)))) ENCODE_PROD(x0, cons_add(z0, z1)) -> c(PROD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_PROD(0, x1) -> c(PROD(0, encArg(x1))) ENCODE_PROD(true, x1) -> c(PROD(true, encArg(x1))) ENCODE_PROD(false, x1) -> c(PROD(false, encArg(x1))) ENCODE_PROD(cons_active(z0), x1) -> c(PROD(active(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_mark(z0), x1) -> c(PROD(mark(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_fact(z0), x1) -> c(PROD(fact(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_if(z0, z1, z2), x1) -> c(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_PROD(cons_zero(z0), x1) -> c(PROD(zero(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_s(z0), x1) -> c(PROD(s(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_prod(z0, z1), x1) -> c(PROD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_PROD(cons_p(z0), x1) -> c(PROD(p(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_add(z0, z1), x1) -> c(PROD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_P(cons_active(z0)) -> c(P(active(encArg(z0)))) ENCODE_P(cons_mark(z0)) -> c(P(mark(encArg(z0)))) ENCODE_P(cons_fact(z0)) -> c(P(fact(encArg(z0)))) ENCODE_P(cons_if(z0, z1, z2)) -> c(P(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_P(cons_zero(z0)) -> c(P(zero(encArg(z0)))) ENCODE_P(cons_s(z0)) -> c(P(s(encArg(z0)))) ENCODE_P(cons_prod(z0, z1)) -> c(P(prod(encArg(z0), encArg(z1)))) ENCODE_P(cons_p(z0)) -> c(P(p(encArg(z0)))) ENCODE_P(cons_add(z0, z1)) -> c(P(add(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, 0) -> c(ADD(encArg(x0), 0)) ENCODE_ADD(x0, true) -> c(ADD(encArg(x0), true)) ENCODE_ADD(x0, false) -> c(ADD(encArg(x0), false)) ENCODE_ADD(x0, cons_active(z0)) -> c(ADD(encArg(x0), active(encArg(z0)))) ENCODE_ADD(x0, cons_mark(z0)) -> c(ADD(encArg(x0), mark(encArg(z0)))) ENCODE_ADD(x0, cons_fact(z0)) -> c(ADD(encArg(x0), fact(encArg(z0)))) ENCODE_ADD(x0, cons_if(z0, z1, z2)) -> c(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ADD(x0, cons_zero(z0)) -> c(ADD(encArg(x0), zero(encArg(z0)))) ENCODE_ADD(x0, cons_s(z0)) -> c(ADD(encArg(x0), s(encArg(z0)))) ENCODE_ADD(x0, cons_prod(z0, z1)) -> c(ADD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, cons_p(z0)) -> c(ADD(encArg(x0), p(encArg(z0)))) ENCODE_ADD(x0, cons_add(z0, z1)) -> c(ADD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_ADD(0, x1) -> c(ADD(0, encArg(x1))) ENCODE_ADD(true, x1) -> c(ADD(true, encArg(x1))) ENCODE_ADD(false, x1) -> c(ADD(false, encArg(x1))) ENCODE_ADD(cons_active(z0), x1) -> c(ADD(active(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_mark(z0), x1) -> c(ADD(mark(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_fact(z0), x1) -> c(ADD(fact(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_if(z0, z1, z2), x1) -> c(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_ADD(cons_zero(z0), x1) -> c(ADD(zero(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_s(z0), x1) -> c(ADD(s(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_prod(z0, z1), x1) -> c(ADD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_ADD(cons_p(z0), x1) -> c(ADD(p(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_add(z0, z1), x1) -> c(ADD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCARG(cons_active(cons_active(cons_active(z0)))) -> c3(ACTIVE(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_active(cons_active(cons_mark(z0)))) -> c3(ACTIVE(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_active(cons_active(cons_fact(z0)))) -> c3(ACTIVE(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_active(cons_active(cons_if(z0, z1, z2)))) -> c3(ACTIVE(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_active(cons_zero(z0)))) -> c3(ACTIVE(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_active(cons_active(cons_s(z0)))) -> c3(ACTIVE(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_active(cons_active(cons_prod(z0, z1)))) -> c3(ACTIVE(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_active(cons_active(cons_p(z0)))) -> c3(ACTIVE(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_active(cons_active(cons_add(z0, z1)))) -> c3(ACTIVE(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(cons_active(z0)))) -> c3(ACTIVE(mark(active(encArg(z0)))), ENCARG(cons_mark(cons_active(z0)))) ENCARG(cons_active(cons_mark(cons_mark(z0)))) -> c3(ACTIVE(mark(mark(encArg(z0)))), ENCARG(cons_mark(cons_mark(z0)))) ENCARG(cons_active(cons_mark(cons_fact(z0)))) -> c3(ACTIVE(mark(fact(encArg(z0)))), ENCARG(cons_mark(cons_fact(z0)))) ENCARG(cons_active(cons_mark(cons_if(z0, z1, z2)))) -> c3(ACTIVE(mark(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_mark(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_mark(cons_zero(z0)))) -> c3(ACTIVE(mark(zero(encArg(z0)))), ENCARG(cons_mark(cons_zero(z0)))) ENCARG(cons_active(cons_mark(cons_s(z0)))) -> c3(ACTIVE(mark(s(encArg(z0)))), ENCARG(cons_mark(cons_s(z0)))) ENCARG(cons_active(cons_mark(cons_prod(z0, z1)))) -> c3(ACTIVE(mark(prod(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_prod(z0, z1)))) ENCARG(cons_active(cons_mark(cons_p(z0)))) -> c3(ACTIVE(mark(p(encArg(z0)))), ENCARG(cons_mark(cons_p(z0)))) ENCARG(cons_active(cons_mark(cons_add(z0, z1)))) -> c3(ACTIVE(mark(add(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(0))) -> c1(ACTIVE(mark(0))) ENCARG(cons_active(cons_mark(0))) -> c1(ENCARG(cons_mark(0))) ENCARG(cons_active(cons_mark(true))) -> c1(ACTIVE(mark(true))) ENCARG(cons_active(cons_mark(true))) -> c1(ENCARG(cons_mark(true))) ENCARG(cons_active(cons_mark(false))) -> c1(ACTIVE(mark(false))) ENCARG(cons_active(cons_mark(false))) -> c1(ENCARG(cons_mark(false))) ENCARG(cons_active(cons_if(x0, x1, 0))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), 0)), ENCARG(cons_if(x0, x1, 0))) ENCARG(cons_active(cons_if(x0, x1, true))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), true)), ENCARG(cons_if(x0, x1, true))) ENCARG(cons_active(cons_if(x0, x1, false))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), false)), ENCARG(cons_if(x0, x1, false))) ENCARG(cons_active(cons_if(x0, x1, cons_active(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), active(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_active(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_mark(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), mark(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_mark(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_fact(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), fact(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_fact(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_if(z0, z1, z2)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_if(x0, x1, cons_zero(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), zero(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_zero(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_s(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), s(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_s(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_prod(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_prod(z0, z1)))) ENCARG(cons_active(cons_if(x0, x1, cons_p(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), p(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_p(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_add(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_add(z0, z1)))) ENCARG(cons_active(cons_if(x0, 0, x2))) -> c3(ACTIVE(if(encArg(x0), 0, encArg(x2))), ENCARG(cons_if(x0, 0, x2))) ENCARG(cons_active(cons_if(x0, true, x2))) -> c3(ACTIVE(if(encArg(x0), true, encArg(x2))), ENCARG(cons_if(x0, true, x2))) ENCARG(cons_active(cons_if(x0, false, x2))) -> c3(ACTIVE(if(encArg(x0), false, encArg(x2))), ENCARG(cons_if(x0, false, x2))) ENCARG(cons_active(cons_if(x0, cons_active(z0), x2))) -> c3(ACTIVE(if(encArg(x0), active(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_active(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_mark(z0), x2))) -> c3(ACTIVE(if(encArg(x0), mark(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_mark(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_fact(z0), x2))) -> c3(ACTIVE(if(encArg(x0), fact(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_fact(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_if(z0, z1, z2), x2))) -> c3(ACTIVE(if(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))), ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2))) ENCARG(cons_active(cons_if(x0, cons_zero(z0), x2))) -> c3(ACTIVE(if(encArg(x0), zero(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_zero(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_s(z0), x2))) -> c3(ACTIVE(if(encArg(x0), s(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_s(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_prod(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_prod(z0, z1), x2))) ENCARG(cons_active(cons_if(x0, cons_p(z0), x2))) -> c3(ACTIVE(if(encArg(x0), p(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_p(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_add(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_add(z0, z1), x2))) ENCARG(cons_active(cons_if(0, x1, x2))) -> c3(ACTIVE(if(0, encArg(x1), encArg(x2))), ENCARG(cons_if(0, x1, x2))) ENCARG(cons_active(cons_if(true, x1, x2))) -> c3(ACTIVE(if(true, encArg(x1), encArg(x2))), ENCARG(cons_if(true, x1, x2))) ENCARG(cons_active(cons_if(false, x1, x2))) -> c3(ACTIVE(if(false, encArg(x1), encArg(x2))), ENCARG(cons_if(false, x1, x2))) ENCARG(cons_active(cons_if(cons_active(z0), x1, x2))) -> c3(ACTIVE(if(active(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_active(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_mark(z0), x1, x2))) -> c3(ACTIVE(if(mark(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_mark(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_fact(z0), x1, x2))) -> c3(ACTIVE(if(fact(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_fact(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_if(z0, z1, z2), x1, x2))) -> c3(ACTIVE(if(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2))) ENCARG(cons_active(cons_if(cons_zero(z0), x1, x2))) -> c3(ACTIVE(if(zero(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_zero(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_s(z0), x1, x2))) -> c3(ACTIVE(if(s(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_s(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_prod(z0, z1), x1, x2))) -> c3(ACTIVE(if(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_prod(z0, z1), x1, x2))) ENCARG(cons_active(cons_if(cons_p(z0), x1, x2))) -> c3(ACTIVE(if(p(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_p(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_add(z0, z1), x1, x2))) -> c3(ACTIVE(if(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_add(z0, z1), x1, x2))) ENCARG(cons_active(cons_zero(0))) -> c3(ACTIVE(zero(0)), ENCARG(cons_zero(0))) ENCARG(cons_active(cons_zero(true))) -> c3(ACTIVE(zero(true)), ENCARG(cons_zero(true))) ENCARG(cons_active(cons_zero(false))) -> c3(ACTIVE(zero(false)), ENCARG(cons_zero(false))) ENCARG(cons_active(cons_zero(cons_active(z0)))) -> c3(ACTIVE(zero(active(encArg(z0)))), ENCARG(cons_zero(cons_active(z0)))) ENCARG(cons_active(cons_zero(cons_mark(z0)))) -> c3(ACTIVE(zero(mark(encArg(z0)))), ENCARG(cons_zero(cons_mark(z0)))) ENCARG(cons_active(cons_zero(cons_fact(z0)))) -> c3(ACTIVE(zero(fact(encArg(z0)))), ENCARG(cons_zero(cons_fact(z0)))) ENCARG(cons_active(cons_zero(cons_if(z0, z1, z2)))) -> c3(ACTIVE(zero(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_zero(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_zero(cons_zero(z0)))) -> c3(ACTIVE(zero(zero(encArg(z0)))), ENCARG(cons_zero(cons_zero(z0)))) ENCARG(cons_active(cons_zero(cons_s(z0)))) -> c3(ACTIVE(zero(s(encArg(z0)))), ENCARG(cons_zero(cons_s(z0)))) ENCARG(cons_active(cons_zero(cons_prod(z0, z1)))) -> c3(ACTIVE(zero(prod(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_prod(z0, z1)))) ENCARG(cons_active(cons_zero(cons_p(z0)))) -> c3(ACTIVE(zero(p(encArg(z0)))), ENCARG(cons_zero(cons_p(z0)))) ENCARG(cons_active(cons_zero(cons_add(z0, z1)))) -> c3(ACTIVE(zero(add(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_add(z0, z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4, c_1, c1_1 ---------------------------------------- (141) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing nodes: ENCARG(cons_active(cons_zero(true))) -> c3(ACTIVE(zero(true)), ENCARG(cons_zero(true))) ENCARG(cons_active(cons_zero(false))) -> c3(ACTIVE(zero(false)), ENCARG(cons_zero(false))) ---------------------------------------- (142) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, 0) -> c(PROD(encArg(x0), 0)) ENCODE_PROD(x0, true) -> c(PROD(encArg(x0), true)) ENCODE_PROD(x0, false) -> c(PROD(encArg(x0), false)) ENCODE_PROD(x0, cons_active(z0)) -> c(PROD(encArg(x0), active(encArg(z0)))) ENCODE_PROD(x0, cons_mark(z0)) -> c(PROD(encArg(x0), mark(encArg(z0)))) ENCODE_PROD(x0, cons_fact(z0)) -> c(PROD(encArg(x0), fact(encArg(z0)))) ENCODE_PROD(x0, cons_if(z0, z1, z2)) -> c(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_PROD(x0, cons_zero(z0)) -> c(PROD(encArg(x0), zero(encArg(z0)))) ENCODE_PROD(x0, cons_s(z0)) -> c(PROD(encArg(x0), s(encArg(z0)))) ENCODE_PROD(x0, cons_prod(z0, z1)) -> c(PROD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, cons_p(z0)) -> c(PROD(encArg(x0), p(encArg(z0)))) ENCODE_PROD(x0, cons_add(z0, z1)) -> c(PROD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_PROD(0, x1) -> c(PROD(0, encArg(x1))) ENCODE_PROD(true, x1) -> c(PROD(true, encArg(x1))) ENCODE_PROD(false, x1) -> c(PROD(false, encArg(x1))) ENCODE_PROD(cons_active(z0), x1) -> c(PROD(active(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_mark(z0), x1) -> c(PROD(mark(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_fact(z0), x1) -> c(PROD(fact(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_if(z0, z1, z2), x1) -> c(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_PROD(cons_zero(z0), x1) -> c(PROD(zero(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_s(z0), x1) -> c(PROD(s(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_prod(z0, z1), x1) -> c(PROD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_PROD(cons_p(z0), x1) -> c(PROD(p(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_add(z0, z1), x1) -> c(PROD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_P(cons_active(z0)) -> c(P(active(encArg(z0)))) ENCODE_P(cons_mark(z0)) -> c(P(mark(encArg(z0)))) ENCODE_P(cons_fact(z0)) -> c(P(fact(encArg(z0)))) ENCODE_P(cons_if(z0, z1, z2)) -> c(P(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_P(cons_zero(z0)) -> c(P(zero(encArg(z0)))) ENCODE_P(cons_s(z0)) -> c(P(s(encArg(z0)))) ENCODE_P(cons_prod(z0, z1)) -> c(P(prod(encArg(z0), encArg(z1)))) ENCODE_P(cons_p(z0)) -> c(P(p(encArg(z0)))) ENCODE_P(cons_add(z0, z1)) -> c(P(add(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, 0) -> c(ADD(encArg(x0), 0)) ENCODE_ADD(x0, true) -> c(ADD(encArg(x0), true)) ENCODE_ADD(x0, false) -> c(ADD(encArg(x0), false)) ENCODE_ADD(x0, cons_active(z0)) -> c(ADD(encArg(x0), active(encArg(z0)))) ENCODE_ADD(x0, cons_mark(z0)) -> c(ADD(encArg(x0), mark(encArg(z0)))) ENCODE_ADD(x0, cons_fact(z0)) -> c(ADD(encArg(x0), fact(encArg(z0)))) ENCODE_ADD(x0, cons_if(z0, z1, z2)) -> c(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ADD(x0, cons_zero(z0)) -> c(ADD(encArg(x0), zero(encArg(z0)))) ENCODE_ADD(x0, cons_s(z0)) -> c(ADD(encArg(x0), s(encArg(z0)))) ENCODE_ADD(x0, cons_prod(z0, z1)) -> c(ADD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, cons_p(z0)) -> c(ADD(encArg(x0), p(encArg(z0)))) ENCODE_ADD(x0, cons_add(z0, z1)) -> c(ADD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_ADD(0, x1) -> c(ADD(0, encArg(x1))) ENCODE_ADD(true, x1) -> c(ADD(true, encArg(x1))) ENCODE_ADD(false, x1) -> c(ADD(false, encArg(x1))) ENCODE_ADD(cons_active(z0), x1) -> c(ADD(active(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_mark(z0), x1) -> c(ADD(mark(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_fact(z0), x1) -> c(ADD(fact(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_if(z0, z1, z2), x1) -> c(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_ADD(cons_zero(z0), x1) -> c(ADD(zero(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_s(z0), x1) -> c(ADD(s(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_prod(z0, z1), x1) -> c(ADD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_ADD(cons_p(z0), x1) -> c(ADD(p(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_add(z0, z1), x1) -> c(ADD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCARG(cons_active(cons_active(cons_active(z0)))) -> c3(ACTIVE(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_active(cons_active(cons_mark(z0)))) -> c3(ACTIVE(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_active(cons_active(cons_fact(z0)))) -> c3(ACTIVE(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_active(cons_active(cons_if(z0, z1, z2)))) -> c3(ACTIVE(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_active(cons_zero(z0)))) -> c3(ACTIVE(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_active(cons_active(cons_s(z0)))) -> c3(ACTIVE(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_active(cons_active(cons_prod(z0, z1)))) -> c3(ACTIVE(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_active(cons_active(cons_p(z0)))) -> c3(ACTIVE(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_active(cons_active(cons_add(z0, z1)))) -> c3(ACTIVE(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(cons_active(z0)))) -> c3(ACTIVE(mark(active(encArg(z0)))), ENCARG(cons_mark(cons_active(z0)))) ENCARG(cons_active(cons_mark(cons_mark(z0)))) -> c3(ACTIVE(mark(mark(encArg(z0)))), ENCARG(cons_mark(cons_mark(z0)))) ENCARG(cons_active(cons_mark(cons_fact(z0)))) -> c3(ACTIVE(mark(fact(encArg(z0)))), ENCARG(cons_mark(cons_fact(z0)))) ENCARG(cons_active(cons_mark(cons_if(z0, z1, z2)))) -> c3(ACTIVE(mark(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_mark(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_mark(cons_zero(z0)))) -> c3(ACTIVE(mark(zero(encArg(z0)))), ENCARG(cons_mark(cons_zero(z0)))) ENCARG(cons_active(cons_mark(cons_s(z0)))) -> c3(ACTIVE(mark(s(encArg(z0)))), ENCARG(cons_mark(cons_s(z0)))) ENCARG(cons_active(cons_mark(cons_prod(z0, z1)))) -> c3(ACTIVE(mark(prod(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_prod(z0, z1)))) ENCARG(cons_active(cons_mark(cons_p(z0)))) -> c3(ACTIVE(mark(p(encArg(z0)))), ENCARG(cons_mark(cons_p(z0)))) ENCARG(cons_active(cons_mark(cons_add(z0, z1)))) -> c3(ACTIVE(mark(add(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(0))) -> c1(ACTIVE(mark(0))) ENCARG(cons_active(cons_mark(0))) -> c1(ENCARG(cons_mark(0))) ENCARG(cons_active(cons_mark(true))) -> c1(ACTIVE(mark(true))) ENCARG(cons_active(cons_mark(true))) -> c1(ENCARG(cons_mark(true))) ENCARG(cons_active(cons_mark(false))) -> c1(ACTIVE(mark(false))) ENCARG(cons_active(cons_mark(false))) -> c1(ENCARG(cons_mark(false))) ENCARG(cons_active(cons_if(x0, x1, 0))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), 0)), ENCARG(cons_if(x0, x1, 0))) ENCARG(cons_active(cons_if(x0, x1, true))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), true)), ENCARG(cons_if(x0, x1, true))) ENCARG(cons_active(cons_if(x0, x1, false))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), false)), ENCARG(cons_if(x0, x1, false))) ENCARG(cons_active(cons_if(x0, x1, cons_active(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), active(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_active(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_mark(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), mark(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_mark(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_fact(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), fact(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_fact(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_if(z0, z1, z2)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_if(x0, x1, cons_zero(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), zero(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_zero(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_s(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), s(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_s(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_prod(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_prod(z0, z1)))) ENCARG(cons_active(cons_if(x0, x1, cons_p(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), p(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_p(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_add(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_add(z0, z1)))) ENCARG(cons_active(cons_if(x0, 0, x2))) -> c3(ACTIVE(if(encArg(x0), 0, encArg(x2))), ENCARG(cons_if(x0, 0, x2))) ENCARG(cons_active(cons_if(x0, true, x2))) -> c3(ACTIVE(if(encArg(x0), true, encArg(x2))), ENCARG(cons_if(x0, true, x2))) ENCARG(cons_active(cons_if(x0, false, x2))) -> c3(ACTIVE(if(encArg(x0), false, encArg(x2))), ENCARG(cons_if(x0, false, x2))) ENCARG(cons_active(cons_if(x0, cons_active(z0), x2))) -> c3(ACTIVE(if(encArg(x0), active(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_active(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_mark(z0), x2))) -> c3(ACTIVE(if(encArg(x0), mark(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_mark(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_fact(z0), x2))) -> c3(ACTIVE(if(encArg(x0), fact(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_fact(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_if(z0, z1, z2), x2))) -> c3(ACTIVE(if(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))), ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2))) ENCARG(cons_active(cons_if(x0, cons_zero(z0), x2))) -> c3(ACTIVE(if(encArg(x0), zero(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_zero(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_s(z0), x2))) -> c3(ACTIVE(if(encArg(x0), s(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_s(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_prod(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_prod(z0, z1), x2))) ENCARG(cons_active(cons_if(x0, cons_p(z0), x2))) -> c3(ACTIVE(if(encArg(x0), p(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_p(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_add(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_add(z0, z1), x2))) ENCARG(cons_active(cons_if(0, x1, x2))) -> c3(ACTIVE(if(0, encArg(x1), encArg(x2))), ENCARG(cons_if(0, x1, x2))) ENCARG(cons_active(cons_if(true, x1, x2))) -> c3(ACTIVE(if(true, encArg(x1), encArg(x2))), ENCARG(cons_if(true, x1, x2))) ENCARG(cons_active(cons_if(false, x1, x2))) -> c3(ACTIVE(if(false, encArg(x1), encArg(x2))), ENCARG(cons_if(false, x1, x2))) ENCARG(cons_active(cons_if(cons_active(z0), x1, x2))) -> c3(ACTIVE(if(active(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_active(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_mark(z0), x1, x2))) -> c3(ACTIVE(if(mark(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_mark(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_fact(z0), x1, x2))) -> c3(ACTIVE(if(fact(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_fact(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_if(z0, z1, z2), x1, x2))) -> c3(ACTIVE(if(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2))) ENCARG(cons_active(cons_if(cons_zero(z0), x1, x2))) -> c3(ACTIVE(if(zero(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_zero(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_s(z0), x1, x2))) -> c3(ACTIVE(if(s(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_s(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_prod(z0, z1), x1, x2))) -> c3(ACTIVE(if(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_prod(z0, z1), x1, x2))) ENCARG(cons_active(cons_if(cons_p(z0), x1, x2))) -> c3(ACTIVE(if(p(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_p(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_add(z0, z1), x1, x2))) -> c3(ACTIVE(if(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_add(z0, z1), x1, x2))) ENCARG(cons_active(cons_zero(0))) -> c3(ACTIVE(zero(0)), ENCARG(cons_zero(0))) ENCARG(cons_active(cons_zero(cons_active(z0)))) -> c3(ACTIVE(zero(active(encArg(z0)))), ENCARG(cons_zero(cons_active(z0)))) ENCARG(cons_active(cons_zero(cons_mark(z0)))) -> c3(ACTIVE(zero(mark(encArg(z0)))), ENCARG(cons_zero(cons_mark(z0)))) ENCARG(cons_active(cons_zero(cons_fact(z0)))) -> c3(ACTIVE(zero(fact(encArg(z0)))), ENCARG(cons_zero(cons_fact(z0)))) ENCARG(cons_active(cons_zero(cons_if(z0, z1, z2)))) -> c3(ACTIVE(zero(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_zero(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_zero(cons_zero(z0)))) -> c3(ACTIVE(zero(zero(encArg(z0)))), ENCARG(cons_zero(cons_zero(z0)))) ENCARG(cons_active(cons_zero(cons_s(z0)))) -> c3(ACTIVE(zero(s(encArg(z0)))), ENCARG(cons_zero(cons_s(z0)))) ENCARG(cons_active(cons_zero(cons_prod(z0, z1)))) -> c3(ACTIVE(zero(prod(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_prod(z0, z1)))) ENCARG(cons_active(cons_zero(cons_p(z0)))) -> c3(ACTIVE(zero(p(encArg(z0)))), ENCARG(cons_zero(cons_p(z0)))) ENCARG(cons_active(cons_zero(cons_add(z0, z1)))) -> c3(ACTIVE(zero(add(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_add(z0, z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4, c_1, c1_1 ---------------------------------------- (143) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (144) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, 0) -> c(PROD(encArg(x0), 0)) ENCODE_PROD(x0, true) -> c(PROD(encArg(x0), true)) ENCODE_PROD(x0, false) -> c(PROD(encArg(x0), false)) ENCODE_PROD(x0, cons_active(z0)) -> c(PROD(encArg(x0), active(encArg(z0)))) ENCODE_PROD(x0, cons_mark(z0)) -> c(PROD(encArg(x0), mark(encArg(z0)))) ENCODE_PROD(x0, cons_fact(z0)) -> c(PROD(encArg(x0), fact(encArg(z0)))) ENCODE_PROD(x0, cons_if(z0, z1, z2)) -> c(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_PROD(x0, cons_zero(z0)) -> c(PROD(encArg(x0), zero(encArg(z0)))) ENCODE_PROD(x0, cons_s(z0)) -> c(PROD(encArg(x0), s(encArg(z0)))) ENCODE_PROD(x0, cons_prod(z0, z1)) -> c(PROD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, cons_p(z0)) -> c(PROD(encArg(x0), p(encArg(z0)))) ENCODE_PROD(x0, cons_add(z0, z1)) -> c(PROD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_PROD(0, x1) -> c(PROD(0, encArg(x1))) ENCODE_PROD(true, x1) -> c(PROD(true, encArg(x1))) ENCODE_PROD(false, x1) -> c(PROD(false, encArg(x1))) ENCODE_PROD(cons_active(z0), x1) -> c(PROD(active(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_mark(z0), x1) -> c(PROD(mark(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_fact(z0), x1) -> c(PROD(fact(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_if(z0, z1, z2), x1) -> c(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_PROD(cons_zero(z0), x1) -> c(PROD(zero(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_s(z0), x1) -> c(PROD(s(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_prod(z0, z1), x1) -> c(PROD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_PROD(cons_p(z0), x1) -> c(PROD(p(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_add(z0, z1), x1) -> c(PROD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_P(cons_active(z0)) -> c(P(active(encArg(z0)))) ENCODE_P(cons_mark(z0)) -> c(P(mark(encArg(z0)))) ENCODE_P(cons_fact(z0)) -> c(P(fact(encArg(z0)))) ENCODE_P(cons_if(z0, z1, z2)) -> c(P(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_P(cons_zero(z0)) -> c(P(zero(encArg(z0)))) ENCODE_P(cons_s(z0)) -> c(P(s(encArg(z0)))) ENCODE_P(cons_prod(z0, z1)) -> c(P(prod(encArg(z0), encArg(z1)))) ENCODE_P(cons_p(z0)) -> c(P(p(encArg(z0)))) ENCODE_P(cons_add(z0, z1)) -> c(P(add(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, 0) -> c(ADD(encArg(x0), 0)) ENCODE_ADD(x0, true) -> c(ADD(encArg(x0), true)) ENCODE_ADD(x0, false) -> c(ADD(encArg(x0), false)) ENCODE_ADD(x0, cons_active(z0)) -> c(ADD(encArg(x0), active(encArg(z0)))) ENCODE_ADD(x0, cons_mark(z0)) -> c(ADD(encArg(x0), mark(encArg(z0)))) ENCODE_ADD(x0, cons_fact(z0)) -> c(ADD(encArg(x0), fact(encArg(z0)))) ENCODE_ADD(x0, cons_if(z0, z1, z2)) -> c(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ADD(x0, cons_zero(z0)) -> c(ADD(encArg(x0), zero(encArg(z0)))) ENCODE_ADD(x0, cons_s(z0)) -> c(ADD(encArg(x0), s(encArg(z0)))) ENCODE_ADD(x0, cons_prod(z0, z1)) -> c(ADD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, cons_p(z0)) -> c(ADD(encArg(x0), p(encArg(z0)))) ENCODE_ADD(x0, cons_add(z0, z1)) -> c(ADD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_ADD(0, x1) -> c(ADD(0, encArg(x1))) ENCODE_ADD(true, x1) -> c(ADD(true, encArg(x1))) ENCODE_ADD(false, x1) -> c(ADD(false, encArg(x1))) ENCODE_ADD(cons_active(z0), x1) -> c(ADD(active(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_mark(z0), x1) -> c(ADD(mark(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_fact(z0), x1) -> c(ADD(fact(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_if(z0, z1, z2), x1) -> c(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_ADD(cons_zero(z0), x1) -> c(ADD(zero(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_s(z0), x1) -> c(ADD(s(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_prod(z0, z1), x1) -> c(ADD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_ADD(cons_p(z0), x1) -> c(ADD(p(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_add(z0, z1), x1) -> c(ADD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCARG(cons_active(cons_active(cons_active(z0)))) -> c3(ACTIVE(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_active(cons_active(cons_mark(z0)))) -> c3(ACTIVE(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_active(cons_active(cons_fact(z0)))) -> c3(ACTIVE(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_active(cons_active(cons_if(z0, z1, z2)))) -> c3(ACTIVE(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_active(cons_zero(z0)))) -> c3(ACTIVE(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_active(cons_active(cons_s(z0)))) -> c3(ACTIVE(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_active(cons_active(cons_prod(z0, z1)))) -> c3(ACTIVE(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_active(cons_active(cons_p(z0)))) -> c3(ACTIVE(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_active(cons_active(cons_add(z0, z1)))) -> c3(ACTIVE(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(cons_active(z0)))) -> c3(ACTIVE(mark(active(encArg(z0)))), ENCARG(cons_mark(cons_active(z0)))) ENCARG(cons_active(cons_mark(cons_mark(z0)))) -> c3(ACTIVE(mark(mark(encArg(z0)))), ENCARG(cons_mark(cons_mark(z0)))) ENCARG(cons_active(cons_mark(cons_fact(z0)))) -> c3(ACTIVE(mark(fact(encArg(z0)))), ENCARG(cons_mark(cons_fact(z0)))) ENCARG(cons_active(cons_mark(cons_if(z0, z1, z2)))) -> c3(ACTIVE(mark(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_mark(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_mark(cons_zero(z0)))) -> c3(ACTIVE(mark(zero(encArg(z0)))), ENCARG(cons_mark(cons_zero(z0)))) ENCARG(cons_active(cons_mark(cons_s(z0)))) -> c3(ACTIVE(mark(s(encArg(z0)))), ENCARG(cons_mark(cons_s(z0)))) ENCARG(cons_active(cons_mark(cons_prod(z0, z1)))) -> c3(ACTIVE(mark(prod(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_prod(z0, z1)))) ENCARG(cons_active(cons_mark(cons_p(z0)))) -> c3(ACTIVE(mark(p(encArg(z0)))), ENCARG(cons_mark(cons_p(z0)))) ENCARG(cons_active(cons_mark(cons_add(z0, z1)))) -> c3(ACTIVE(mark(add(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(0))) -> c1(ACTIVE(mark(0))) ENCARG(cons_active(cons_mark(0))) -> c1(ENCARG(cons_mark(0))) ENCARG(cons_active(cons_mark(true))) -> c1(ACTIVE(mark(true))) ENCARG(cons_active(cons_mark(true))) -> c1(ENCARG(cons_mark(true))) ENCARG(cons_active(cons_mark(false))) -> c1(ACTIVE(mark(false))) ENCARG(cons_active(cons_mark(false))) -> c1(ENCARG(cons_mark(false))) ENCARG(cons_active(cons_if(x0, x1, 0))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), 0)), ENCARG(cons_if(x0, x1, 0))) ENCARG(cons_active(cons_if(x0, x1, true))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), true)), ENCARG(cons_if(x0, x1, true))) ENCARG(cons_active(cons_if(x0, x1, false))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), false)), ENCARG(cons_if(x0, x1, false))) ENCARG(cons_active(cons_if(x0, x1, cons_active(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), active(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_active(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_mark(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), mark(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_mark(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_fact(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), fact(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_fact(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_if(z0, z1, z2)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_if(x0, x1, cons_zero(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), zero(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_zero(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_s(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), s(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_s(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_prod(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_prod(z0, z1)))) ENCARG(cons_active(cons_if(x0, x1, cons_p(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), p(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_p(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_add(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_add(z0, z1)))) ENCARG(cons_active(cons_if(x0, 0, x2))) -> c3(ACTIVE(if(encArg(x0), 0, encArg(x2))), ENCARG(cons_if(x0, 0, x2))) ENCARG(cons_active(cons_if(x0, true, x2))) -> c3(ACTIVE(if(encArg(x0), true, encArg(x2))), ENCARG(cons_if(x0, true, x2))) ENCARG(cons_active(cons_if(x0, false, x2))) -> c3(ACTIVE(if(encArg(x0), false, encArg(x2))), ENCARG(cons_if(x0, false, x2))) ENCARG(cons_active(cons_if(x0, cons_active(z0), x2))) -> c3(ACTIVE(if(encArg(x0), active(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_active(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_mark(z0), x2))) -> c3(ACTIVE(if(encArg(x0), mark(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_mark(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_fact(z0), x2))) -> c3(ACTIVE(if(encArg(x0), fact(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_fact(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_if(z0, z1, z2), x2))) -> c3(ACTIVE(if(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))), ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2))) ENCARG(cons_active(cons_if(x0, cons_zero(z0), x2))) -> c3(ACTIVE(if(encArg(x0), zero(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_zero(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_s(z0), x2))) -> c3(ACTIVE(if(encArg(x0), s(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_s(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_prod(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_prod(z0, z1), x2))) ENCARG(cons_active(cons_if(x0, cons_p(z0), x2))) -> c3(ACTIVE(if(encArg(x0), p(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_p(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_add(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_add(z0, z1), x2))) ENCARG(cons_active(cons_if(0, x1, x2))) -> c3(ACTIVE(if(0, encArg(x1), encArg(x2))), ENCARG(cons_if(0, x1, x2))) ENCARG(cons_active(cons_if(true, x1, x2))) -> c3(ACTIVE(if(true, encArg(x1), encArg(x2))), ENCARG(cons_if(true, x1, x2))) ENCARG(cons_active(cons_if(false, x1, x2))) -> c3(ACTIVE(if(false, encArg(x1), encArg(x2))), ENCARG(cons_if(false, x1, x2))) ENCARG(cons_active(cons_if(cons_active(z0), x1, x2))) -> c3(ACTIVE(if(active(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_active(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_mark(z0), x1, x2))) -> c3(ACTIVE(if(mark(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_mark(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_fact(z0), x1, x2))) -> c3(ACTIVE(if(fact(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_fact(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_if(z0, z1, z2), x1, x2))) -> c3(ACTIVE(if(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2))) ENCARG(cons_active(cons_if(cons_zero(z0), x1, x2))) -> c3(ACTIVE(if(zero(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_zero(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_s(z0), x1, x2))) -> c3(ACTIVE(if(s(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_s(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_prod(z0, z1), x1, x2))) -> c3(ACTIVE(if(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_prod(z0, z1), x1, x2))) ENCARG(cons_active(cons_if(cons_p(z0), x1, x2))) -> c3(ACTIVE(if(p(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_p(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_add(z0, z1), x1, x2))) -> c3(ACTIVE(if(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_add(z0, z1), x1, x2))) ENCARG(cons_active(cons_zero(cons_active(z0)))) -> c3(ACTIVE(zero(active(encArg(z0)))), ENCARG(cons_zero(cons_active(z0)))) ENCARG(cons_active(cons_zero(cons_mark(z0)))) -> c3(ACTIVE(zero(mark(encArg(z0)))), ENCARG(cons_zero(cons_mark(z0)))) ENCARG(cons_active(cons_zero(cons_fact(z0)))) -> c3(ACTIVE(zero(fact(encArg(z0)))), ENCARG(cons_zero(cons_fact(z0)))) ENCARG(cons_active(cons_zero(cons_if(z0, z1, z2)))) -> c3(ACTIVE(zero(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_zero(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_zero(cons_zero(z0)))) -> c3(ACTIVE(zero(zero(encArg(z0)))), ENCARG(cons_zero(cons_zero(z0)))) ENCARG(cons_active(cons_zero(cons_s(z0)))) -> c3(ACTIVE(zero(s(encArg(z0)))), ENCARG(cons_zero(cons_s(z0)))) ENCARG(cons_active(cons_zero(cons_prod(z0, z1)))) -> c3(ACTIVE(zero(prod(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_prod(z0, z1)))) ENCARG(cons_active(cons_zero(cons_p(z0)))) -> c3(ACTIVE(zero(p(encArg(z0)))), ENCARG(cons_zero(cons_p(z0)))) ENCARG(cons_active(cons_zero(cons_add(z0, z1)))) -> c3(ACTIVE(zero(add(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_add(z0, z1)))) ENCARG(cons_active(cons_zero(0))) -> c3(ACTIVE(zero(0))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4, c_1, c1_1, c3_1 ---------------------------------------- (145) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCARG(cons_active(cons_s(z0))) -> c3(ACTIVE(s(encArg(z0))), ENCARG(cons_s(z0))) by ENCARG(cons_active(cons_s(0))) -> c3(ACTIVE(s(0)), ENCARG(cons_s(0))) ENCARG(cons_active(cons_s(true))) -> c3(ACTIVE(s(true)), ENCARG(cons_s(true))) ENCARG(cons_active(cons_s(false))) -> c3(ACTIVE(s(false)), ENCARG(cons_s(false))) ENCARG(cons_active(cons_s(cons_active(z0)))) -> c3(ACTIVE(s(active(encArg(z0)))), ENCARG(cons_s(cons_active(z0)))) ENCARG(cons_active(cons_s(cons_mark(z0)))) -> c3(ACTIVE(s(mark(encArg(z0)))), ENCARG(cons_s(cons_mark(z0)))) ENCARG(cons_active(cons_s(cons_fact(z0)))) -> c3(ACTIVE(s(fact(encArg(z0)))), ENCARG(cons_s(cons_fact(z0)))) ENCARG(cons_active(cons_s(cons_if(z0, z1, z2)))) -> c3(ACTIVE(s(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_s(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_s(cons_zero(z0)))) -> c3(ACTIVE(s(zero(encArg(z0)))), ENCARG(cons_s(cons_zero(z0)))) ENCARG(cons_active(cons_s(cons_s(z0)))) -> c3(ACTIVE(s(s(encArg(z0)))), ENCARG(cons_s(cons_s(z0)))) ENCARG(cons_active(cons_s(cons_prod(z0, z1)))) -> c3(ACTIVE(s(prod(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_prod(z0, z1)))) ENCARG(cons_active(cons_s(cons_p(z0)))) -> c3(ACTIVE(s(p(encArg(z0)))), ENCARG(cons_s(cons_p(z0)))) ENCARG(cons_active(cons_s(cons_add(z0, z1)))) -> c3(ACTIVE(s(add(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_add(z0, z1)))) ---------------------------------------- (146) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, 0) -> c(PROD(encArg(x0), 0)) ENCODE_PROD(x0, true) -> c(PROD(encArg(x0), true)) ENCODE_PROD(x0, false) -> c(PROD(encArg(x0), false)) ENCODE_PROD(x0, cons_active(z0)) -> c(PROD(encArg(x0), active(encArg(z0)))) ENCODE_PROD(x0, cons_mark(z0)) -> c(PROD(encArg(x0), mark(encArg(z0)))) ENCODE_PROD(x0, cons_fact(z0)) -> c(PROD(encArg(x0), fact(encArg(z0)))) ENCODE_PROD(x0, cons_if(z0, z1, z2)) -> c(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_PROD(x0, cons_zero(z0)) -> c(PROD(encArg(x0), zero(encArg(z0)))) ENCODE_PROD(x0, cons_s(z0)) -> c(PROD(encArg(x0), s(encArg(z0)))) ENCODE_PROD(x0, cons_prod(z0, z1)) -> c(PROD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, cons_p(z0)) -> c(PROD(encArg(x0), p(encArg(z0)))) ENCODE_PROD(x0, cons_add(z0, z1)) -> c(PROD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_PROD(0, x1) -> c(PROD(0, encArg(x1))) ENCODE_PROD(true, x1) -> c(PROD(true, encArg(x1))) ENCODE_PROD(false, x1) -> c(PROD(false, encArg(x1))) ENCODE_PROD(cons_active(z0), x1) -> c(PROD(active(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_mark(z0), x1) -> c(PROD(mark(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_fact(z0), x1) -> c(PROD(fact(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_if(z0, z1, z2), x1) -> c(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_PROD(cons_zero(z0), x1) -> c(PROD(zero(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_s(z0), x1) -> c(PROD(s(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_prod(z0, z1), x1) -> c(PROD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_PROD(cons_p(z0), x1) -> c(PROD(p(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_add(z0, z1), x1) -> c(PROD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_P(cons_active(z0)) -> c(P(active(encArg(z0)))) ENCODE_P(cons_mark(z0)) -> c(P(mark(encArg(z0)))) ENCODE_P(cons_fact(z0)) -> c(P(fact(encArg(z0)))) ENCODE_P(cons_if(z0, z1, z2)) -> c(P(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_P(cons_zero(z0)) -> c(P(zero(encArg(z0)))) ENCODE_P(cons_s(z0)) -> c(P(s(encArg(z0)))) ENCODE_P(cons_prod(z0, z1)) -> c(P(prod(encArg(z0), encArg(z1)))) ENCODE_P(cons_p(z0)) -> c(P(p(encArg(z0)))) ENCODE_P(cons_add(z0, z1)) -> c(P(add(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, 0) -> c(ADD(encArg(x0), 0)) ENCODE_ADD(x0, true) -> c(ADD(encArg(x0), true)) ENCODE_ADD(x0, false) -> c(ADD(encArg(x0), false)) ENCODE_ADD(x0, cons_active(z0)) -> c(ADD(encArg(x0), active(encArg(z0)))) ENCODE_ADD(x0, cons_mark(z0)) -> c(ADD(encArg(x0), mark(encArg(z0)))) ENCODE_ADD(x0, cons_fact(z0)) -> c(ADD(encArg(x0), fact(encArg(z0)))) ENCODE_ADD(x0, cons_if(z0, z1, z2)) -> c(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ADD(x0, cons_zero(z0)) -> c(ADD(encArg(x0), zero(encArg(z0)))) ENCODE_ADD(x0, cons_s(z0)) -> c(ADD(encArg(x0), s(encArg(z0)))) ENCODE_ADD(x0, cons_prod(z0, z1)) -> c(ADD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, cons_p(z0)) -> c(ADD(encArg(x0), p(encArg(z0)))) ENCODE_ADD(x0, cons_add(z0, z1)) -> c(ADD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_ADD(0, x1) -> c(ADD(0, encArg(x1))) ENCODE_ADD(true, x1) -> c(ADD(true, encArg(x1))) ENCODE_ADD(false, x1) -> c(ADD(false, encArg(x1))) ENCODE_ADD(cons_active(z0), x1) -> c(ADD(active(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_mark(z0), x1) -> c(ADD(mark(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_fact(z0), x1) -> c(ADD(fact(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_if(z0, z1, z2), x1) -> c(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_ADD(cons_zero(z0), x1) -> c(ADD(zero(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_s(z0), x1) -> c(ADD(s(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_prod(z0, z1), x1) -> c(ADD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_ADD(cons_p(z0), x1) -> c(ADD(p(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_add(z0, z1), x1) -> c(ADD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCARG(cons_active(cons_active(cons_active(z0)))) -> c3(ACTIVE(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_active(cons_active(cons_mark(z0)))) -> c3(ACTIVE(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_active(cons_active(cons_fact(z0)))) -> c3(ACTIVE(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_active(cons_active(cons_if(z0, z1, z2)))) -> c3(ACTIVE(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_active(cons_zero(z0)))) -> c3(ACTIVE(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_active(cons_active(cons_s(z0)))) -> c3(ACTIVE(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_active(cons_active(cons_prod(z0, z1)))) -> c3(ACTIVE(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_active(cons_active(cons_p(z0)))) -> c3(ACTIVE(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_active(cons_active(cons_add(z0, z1)))) -> c3(ACTIVE(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(cons_active(z0)))) -> c3(ACTIVE(mark(active(encArg(z0)))), ENCARG(cons_mark(cons_active(z0)))) ENCARG(cons_active(cons_mark(cons_mark(z0)))) -> c3(ACTIVE(mark(mark(encArg(z0)))), ENCARG(cons_mark(cons_mark(z0)))) ENCARG(cons_active(cons_mark(cons_fact(z0)))) -> c3(ACTIVE(mark(fact(encArg(z0)))), ENCARG(cons_mark(cons_fact(z0)))) ENCARG(cons_active(cons_mark(cons_if(z0, z1, z2)))) -> c3(ACTIVE(mark(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_mark(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_mark(cons_zero(z0)))) -> c3(ACTIVE(mark(zero(encArg(z0)))), ENCARG(cons_mark(cons_zero(z0)))) ENCARG(cons_active(cons_mark(cons_s(z0)))) -> c3(ACTIVE(mark(s(encArg(z0)))), ENCARG(cons_mark(cons_s(z0)))) ENCARG(cons_active(cons_mark(cons_prod(z0, z1)))) -> c3(ACTIVE(mark(prod(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_prod(z0, z1)))) ENCARG(cons_active(cons_mark(cons_p(z0)))) -> c3(ACTIVE(mark(p(encArg(z0)))), ENCARG(cons_mark(cons_p(z0)))) ENCARG(cons_active(cons_mark(cons_add(z0, z1)))) -> c3(ACTIVE(mark(add(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(0))) -> c1(ACTIVE(mark(0))) ENCARG(cons_active(cons_mark(0))) -> c1(ENCARG(cons_mark(0))) ENCARG(cons_active(cons_mark(true))) -> c1(ACTIVE(mark(true))) ENCARG(cons_active(cons_mark(true))) -> c1(ENCARG(cons_mark(true))) ENCARG(cons_active(cons_mark(false))) -> c1(ACTIVE(mark(false))) ENCARG(cons_active(cons_mark(false))) -> c1(ENCARG(cons_mark(false))) ENCARG(cons_active(cons_if(x0, x1, 0))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), 0)), ENCARG(cons_if(x0, x1, 0))) ENCARG(cons_active(cons_if(x0, x1, true))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), true)), ENCARG(cons_if(x0, x1, true))) ENCARG(cons_active(cons_if(x0, x1, false))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), false)), ENCARG(cons_if(x0, x1, false))) ENCARG(cons_active(cons_if(x0, x1, cons_active(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), active(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_active(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_mark(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), mark(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_mark(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_fact(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), fact(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_fact(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_if(z0, z1, z2)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_if(x0, x1, cons_zero(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), zero(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_zero(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_s(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), s(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_s(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_prod(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_prod(z0, z1)))) ENCARG(cons_active(cons_if(x0, x1, cons_p(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), p(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_p(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_add(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_add(z0, z1)))) ENCARG(cons_active(cons_if(x0, 0, x2))) -> c3(ACTIVE(if(encArg(x0), 0, encArg(x2))), ENCARG(cons_if(x0, 0, x2))) ENCARG(cons_active(cons_if(x0, true, x2))) -> c3(ACTIVE(if(encArg(x0), true, encArg(x2))), ENCARG(cons_if(x0, true, x2))) ENCARG(cons_active(cons_if(x0, false, x2))) -> c3(ACTIVE(if(encArg(x0), false, encArg(x2))), ENCARG(cons_if(x0, false, x2))) ENCARG(cons_active(cons_if(x0, cons_active(z0), x2))) -> c3(ACTIVE(if(encArg(x0), active(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_active(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_mark(z0), x2))) -> c3(ACTIVE(if(encArg(x0), mark(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_mark(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_fact(z0), x2))) -> c3(ACTIVE(if(encArg(x0), fact(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_fact(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_if(z0, z1, z2), x2))) -> c3(ACTIVE(if(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))), ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2))) ENCARG(cons_active(cons_if(x0, cons_zero(z0), x2))) -> c3(ACTIVE(if(encArg(x0), zero(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_zero(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_s(z0), x2))) -> c3(ACTIVE(if(encArg(x0), s(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_s(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_prod(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_prod(z0, z1), x2))) ENCARG(cons_active(cons_if(x0, cons_p(z0), x2))) -> c3(ACTIVE(if(encArg(x0), p(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_p(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_add(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_add(z0, z1), x2))) ENCARG(cons_active(cons_if(0, x1, x2))) -> c3(ACTIVE(if(0, encArg(x1), encArg(x2))), ENCARG(cons_if(0, x1, x2))) ENCARG(cons_active(cons_if(true, x1, x2))) -> c3(ACTIVE(if(true, encArg(x1), encArg(x2))), ENCARG(cons_if(true, x1, x2))) ENCARG(cons_active(cons_if(false, x1, x2))) -> c3(ACTIVE(if(false, encArg(x1), encArg(x2))), ENCARG(cons_if(false, x1, x2))) ENCARG(cons_active(cons_if(cons_active(z0), x1, x2))) -> c3(ACTIVE(if(active(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_active(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_mark(z0), x1, x2))) -> c3(ACTIVE(if(mark(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_mark(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_fact(z0), x1, x2))) -> c3(ACTIVE(if(fact(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_fact(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_if(z0, z1, z2), x1, x2))) -> c3(ACTIVE(if(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2))) ENCARG(cons_active(cons_if(cons_zero(z0), x1, x2))) -> c3(ACTIVE(if(zero(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_zero(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_s(z0), x1, x2))) -> c3(ACTIVE(if(s(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_s(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_prod(z0, z1), x1, x2))) -> c3(ACTIVE(if(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_prod(z0, z1), x1, x2))) ENCARG(cons_active(cons_if(cons_p(z0), x1, x2))) -> c3(ACTIVE(if(p(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_p(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_add(z0, z1), x1, x2))) -> c3(ACTIVE(if(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_add(z0, z1), x1, x2))) ENCARG(cons_active(cons_zero(cons_active(z0)))) -> c3(ACTIVE(zero(active(encArg(z0)))), ENCARG(cons_zero(cons_active(z0)))) ENCARG(cons_active(cons_zero(cons_mark(z0)))) -> c3(ACTIVE(zero(mark(encArg(z0)))), ENCARG(cons_zero(cons_mark(z0)))) ENCARG(cons_active(cons_zero(cons_fact(z0)))) -> c3(ACTIVE(zero(fact(encArg(z0)))), ENCARG(cons_zero(cons_fact(z0)))) ENCARG(cons_active(cons_zero(cons_if(z0, z1, z2)))) -> c3(ACTIVE(zero(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_zero(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_zero(cons_zero(z0)))) -> c3(ACTIVE(zero(zero(encArg(z0)))), ENCARG(cons_zero(cons_zero(z0)))) ENCARG(cons_active(cons_zero(cons_s(z0)))) -> c3(ACTIVE(zero(s(encArg(z0)))), ENCARG(cons_zero(cons_s(z0)))) ENCARG(cons_active(cons_zero(cons_prod(z0, z1)))) -> c3(ACTIVE(zero(prod(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_prod(z0, z1)))) ENCARG(cons_active(cons_zero(cons_p(z0)))) -> c3(ACTIVE(zero(p(encArg(z0)))), ENCARG(cons_zero(cons_p(z0)))) ENCARG(cons_active(cons_zero(cons_add(z0, z1)))) -> c3(ACTIVE(zero(add(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_add(z0, z1)))) ENCARG(cons_active(cons_zero(0))) -> c3(ACTIVE(zero(0))) ENCARG(cons_active(cons_s(0))) -> c3(ACTIVE(s(0)), ENCARG(cons_s(0))) ENCARG(cons_active(cons_s(true))) -> c3(ACTIVE(s(true)), ENCARG(cons_s(true))) ENCARG(cons_active(cons_s(false))) -> c3(ACTIVE(s(false)), ENCARG(cons_s(false))) ENCARG(cons_active(cons_s(cons_active(z0)))) -> c3(ACTIVE(s(active(encArg(z0)))), ENCARG(cons_s(cons_active(z0)))) ENCARG(cons_active(cons_s(cons_mark(z0)))) -> c3(ACTIVE(s(mark(encArg(z0)))), ENCARG(cons_s(cons_mark(z0)))) ENCARG(cons_active(cons_s(cons_fact(z0)))) -> c3(ACTIVE(s(fact(encArg(z0)))), ENCARG(cons_s(cons_fact(z0)))) ENCARG(cons_active(cons_s(cons_if(z0, z1, z2)))) -> c3(ACTIVE(s(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_s(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_s(cons_zero(z0)))) -> c3(ACTIVE(s(zero(encArg(z0)))), ENCARG(cons_s(cons_zero(z0)))) ENCARG(cons_active(cons_s(cons_s(z0)))) -> c3(ACTIVE(s(s(encArg(z0)))), ENCARG(cons_s(cons_s(z0)))) ENCARG(cons_active(cons_s(cons_prod(z0, z1)))) -> c3(ACTIVE(s(prod(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_prod(z0, z1)))) ENCARG(cons_active(cons_s(cons_p(z0)))) -> c3(ACTIVE(s(p(encArg(z0)))), ENCARG(cons_s(cons_p(z0)))) ENCARG(cons_active(cons_s(cons_add(z0, z1)))) -> c3(ACTIVE(s(add(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_add(z0, z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4, c_1, c1_1, c3_1 ---------------------------------------- (147) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing nodes: ENCARG(cons_active(cons_s(false))) -> c3(ACTIVE(s(false)), ENCARG(cons_s(false))) ENCARG(cons_active(cons_s(true))) -> c3(ACTIVE(s(true)), ENCARG(cons_s(true))) ENCARG(cons_active(cons_s(0))) -> c3(ACTIVE(s(0)), ENCARG(cons_s(0))) ---------------------------------------- (148) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, 0) -> c(PROD(encArg(x0), 0)) ENCODE_PROD(x0, true) -> c(PROD(encArg(x0), true)) ENCODE_PROD(x0, false) -> c(PROD(encArg(x0), false)) ENCODE_PROD(x0, cons_active(z0)) -> c(PROD(encArg(x0), active(encArg(z0)))) ENCODE_PROD(x0, cons_mark(z0)) -> c(PROD(encArg(x0), mark(encArg(z0)))) ENCODE_PROD(x0, cons_fact(z0)) -> c(PROD(encArg(x0), fact(encArg(z0)))) ENCODE_PROD(x0, cons_if(z0, z1, z2)) -> c(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_PROD(x0, cons_zero(z0)) -> c(PROD(encArg(x0), zero(encArg(z0)))) ENCODE_PROD(x0, cons_s(z0)) -> c(PROD(encArg(x0), s(encArg(z0)))) ENCODE_PROD(x0, cons_prod(z0, z1)) -> c(PROD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, cons_p(z0)) -> c(PROD(encArg(x0), p(encArg(z0)))) ENCODE_PROD(x0, cons_add(z0, z1)) -> c(PROD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_PROD(0, x1) -> c(PROD(0, encArg(x1))) ENCODE_PROD(true, x1) -> c(PROD(true, encArg(x1))) ENCODE_PROD(false, x1) -> c(PROD(false, encArg(x1))) ENCODE_PROD(cons_active(z0), x1) -> c(PROD(active(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_mark(z0), x1) -> c(PROD(mark(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_fact(z0), x1) -> c(PROD(fact(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_if(z0, z1, z2), x1) -> c(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_PROD(cons_zero(z0), x1) -> c(PROD(zero(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_s(z0), x1) -> c(PROD(s(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_prod(z0, z1), x1) -> c(PROD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_PROD(cons_p(z0), x1) -> c(PROD(p(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_add(z0, z1), x1) -> c(PROD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_P(cons_active(z0)) -> c(P(active(encArg(z0)))) ENCODE_P(cons_mark(z0)) -> c(P(mark(encArg(z0)))) ENCODE_P(cons_fact(z0)) -> c(P(fact(encArg(z0)))) ENCODE_P(cons_if(z0, z1, z2)) -> c(P(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_P(cons_zero(z0)) -> c(P(zero(encArg(z0)))) ENCODE_P(cons_s(z0)) -> c(P(s(encArg(z0)))) ENCODE_P(cons_prod(z0, z1)) -> c(P(prod(encArg(z0), encArg(z1)))) ENCODE_P(cons_p(z0)) -> c(P(p(encArg(z0)))) ENCODE_P(cons_add(z0, z1)) -> c(P(add(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, 0) -> c(ADD(encArg(x0), 0)) ENCODE_ADD(x0, true) -> c(ADD(encArg(x0), true)) ENCODE_ADD(x0, false) -> c(ADD(encArg(x0), false)) ENCODE_ADD(x0, cons_active(z0)) -> c(ADD(encArg(x0), active(encArg(z0)))) ENCODE_ADD(x0, cons_mark(z0)) -> c(ADD(encArg(x0), mark(encArg(z0)))) ENCODE_ADD(x0, cons_fact(z0)) -> c(ADD(encArg(x0), fact(encArg(z0)))) ENCODE_ADD(x0, cons_if(z0, z1, z2)) -> c(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ADD(x0, cons_zero(z0)) -> c(ADD(encArg(x0), zero(encArg(z0)))) ENCODE_ADD(x0, cons_s(z0)) -> c(ADD(encArg(x0), s(encArg(z0)))) ENCODE_ADD(x0, cons_prod(z0, z1)) -> c(ADD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, cons_p(z0)) -> c(ADD(encArg(x0), p(encArg(z0)))) ENCODE_ADD(x0, cons_add(z0, z1)) -> c(ADD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_ADD(0, x1) -> c(ADD(0, encArg(x1))) ENCODE_ADD(true, x1) -> c(ADD(true, encArg(x1))) ENCODE_ADD(false, x1) -> c(ADD(false, encArg(x1))) ENCODE_ADD(cons_active(z0), x1) -> c(ADD(active(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_mark(z0), x1) -> c(ADD(mark(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_fact(z0), x1) -> c(ADD(fact(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_if(z0, z1, z2), x1) -> c(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_ADD(cons_zero(z0), x1) -> c(ADD(zero(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_s(z0), x1) -> c(ADD(s(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_prod(z0, z1), x1) -> c(ADD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_ADD(cons_p(z0), x1) -> c(ADD(p(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_add(z0, z1), x1) -> c(ADD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCARG(cons_active(cons_active(cons_active(z0)))) -> c3(ACTIVE(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_active(cons_active(cons_mark(z0)))) -> c3(ACTIVE(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_active(cons_active(cons_fact(z0)))) -> c3(ACTIVE(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_active(cons_active(cons_if(z0, z1, z2)))) -> c3(ACTIVE(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_active(cons_zero(z0)))) -> c3(ACTIVE(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_active(cons_active(cons_s(z0)))) -> c3(ACTIVE(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_active(cons_active(cons_prod(z0, z1)))) -> c3(ACTIVE(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_active(cons_active(cons_p(z0)))) -> c3(ACTIVE(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_active(cons_active(cons_add(z0, z1)))) -> c3(ACTIVE(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(cons_active(z0)))) -> c3(ACTIVE(mark(active(encArg(z0)))), ENCARG(cons_mark(cons_active(z0)))) ENCARG(cons_active(cons_mark(cons_mark(z0)))) -> c3(ACTIVE(mark(mark(encArg(z0)))), ENCARG(cons_mark(cons_mark(z0)))) ENCARG(cons_active(cons_mark(cons_fact(z0)))) -> c3(ACTIVE(mark(fact(encArg(z0)))), ENCARG(cons_mark(cons_fact(z0)))) ENCARG(cons_active(cons_mark(cons_if(z0, z1, z2)))) -> c3(ACTIVE(mark(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_mark(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_mark(cons_zero(z0)))) -> c3(ACTIVE(mark(zero(encArg(z0)))), ENCARG(cons_mark(cons_zero(z0)))) ENCARG(cons_active(cons_mark(cons_s(z0)))) -> c3(ACTIVE(mark(s(encArg(z0)))), ENCARG(cons_mark(cons_s(z0)))) ENCARG(cons_active(cons_mark(cons_prod(z0, z1)))) -> c3(ACTIVE(mark(prod(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_prod(z0, z1)))) ENCARG(cons_active(cons_mark(cons_p(z0)))) -> c3(ACTIVE(mark(p(encArg(z0)))), ENCARG(cons_mark(cons_p(z0)))) ENCARG(cons_active(cons_mark(cons_add(z0, z1)))) -> c3(ACTIVE(mark(add(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(0))) -> c1(ACTIVE(mark(0))) ENCARG(cons_active(cons_mark(0))) -> c1(ENCARG(cons_mark(0))) ENCARG(cons_active(cons_mark(true))) -> c1(ACTIVE(mark(true))) ENCARG(cons_active(cons_mark(true))) -> c1(ENCARG(cons_mark(true))) ENCARG(cons_active(cons_mark(false))) -> c1(ACTIVE(mark(false))) ENCARG(cons_active(cons_mark(false))) -> c1(ENCARG(cons_mark(false))) ENCARG(cons_active(cons_if(x0, x1, 0))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), 0)), ENCARG(cons_if(x0, x1, 0))) ENCARG(cons_active(cons_if(x0, x1, true))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), true)), ENCARG(cons_if(x0, x1, true))) ENCARG(cons_active(cons_if(x0, x1, false))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), false)), ENCARG(cons_if(x0, x1, false))) ENCARG(cons_active(cons_if(x0, x1, cons_active(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), active(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_active(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_mark(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), mark(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_mark(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_fact(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), fact(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_fact(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_if(z0, z1, z2)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_if(x0, x1, cons_zero(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), zero(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_zero(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_s(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), s(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_s(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_prod(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_prod(z0, z1)))) ENCARG(cons_active(cons_if(x0, x1, cons_p(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), p(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_p(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_add(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_add(z0, z1)))) ENCARG(cons_active(cons_if(x0, 0, x2))) -> c3(ACTIVE(if(encArg(x0), 0, encArg(x2))), ENCARG(cons_if(x0, 0, x2))) ENCARG(cons_active(cons_if(x0, true, x2))) -> c3(ACTIVE(if(encArg(x0), true, encArg(x2))), ENCARG(cons_if(x0, true, x2))) ENCARG(cons_active(cons_if(x0, false, x2))) -> c3(ACTIVE(if(encArg(x0), false, encArg(x2))), ENCARG(cons_if(x0, false, x2))) ENCARG(cons_active(cons_if(x0, cons_active(z0), x2))) -> c3(ACTIVE(if(encArg(x0), active(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_active(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_mark(z0), x2))) -> c3(ACTIVE(if(encArg(x0), mark(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_mark(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_fact(z0), x2))) -> c3(ACTIVE(if(encArg(x0), fact(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_fact(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_if(z0, z1, z2), x2))) -> c3(ACTIVE(if(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))), ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2))) ENCARG(cons_active(cons_if(x0, cons_zero(z0), x2))) -> c3(ACTIVE(if(encArg(x0), zero(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_zero(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_s(z0), x2))) -> c3(ACTIVE(if(encArg(x0), s(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_s(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_prod(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_prod(z0, z1), x2))) ENCARG(cons_active(cons_if(x0, cons_p(z0), x2))) -> c3(ACTIVE(if(encArg(x0), p(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_p(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_add(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_add(z0, z1), x2))) ENCARG(cons_active(cons_if(0, x1, x2))) -> c3(ACTIVE(if(0, encArg(x1), encArg(x2))), ENCARG(cons_if(0, x1, x2))) ENCARG(cons_active(cons_if(true, x1, x2))) -> c3(ACTIVE(if(true, encArg(x1), encArg(x2))), ENCARG(cons_if(true, x1, x2))) ENCARG(cons_active(cons_if(false, x1, x2))) -> c3(ACTIVE(if(false, encArg(x1), encArg(x2))), ENCARG(cons_if(false, x1, x2))) ENCARG(cons_active(cons_if(cons_active(z0), x1, x2))) -> c3(ACTIVE(if(active(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_active(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_mark(z0), x1, x2))) -> c3(ACTIVE(if(mark(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_mark(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_fact(z0), x1, x2))) -> c3(ACTIVE(if(fact(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_fact(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_if(z0, z1, z2), x1, x2))) -> c3(ACTIVE(if(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2))) ENCARG(cons_active(cons_if(cons_zero(z0), x1, x2))) -> c3(ACTIVE(if(zero(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_zero(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_s(z0), x1, x2))) -> c3(ACTIVE(if(s(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_s(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_prod(z0, z1), x1, x2))) -> c3(ACTIVE(if(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_prod(z0, z1), x1, x2))) ENCARG(cons_active(cons_if(cons_p(z0), x1, x2))) -> c3(ACTIVE(if(p(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_p(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_add(z0, z1), x1, x2))) -> c3(ACTIVE(if(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_add(z0, z1), x1, x2))) ENCARG(cons_active(cons_zero(cons_active(z0)))) -> c3(ACTIVE(zero(active(encArg(z0)))), ENCARG(cons_zero(cons_active(z0)))) ENCARG(cons_active(cons_zero(cons_mark(z0)))) -> c3(ACTIVE(zero(mark(encArg(z0)))), ENCARG(cons_zero(cons_mark(z0)))) ENCARG(cons_active(cons_zero(cons_fact(z0)))) -> c3(ACTIVE(zero(fact(encArg(z0)))), ENCARG(cons_zero(cons_fact(z0)))) ENCARG(cons_active(cons_zero(cons_if(z0, z1, z2)))) -> c3(ACTIVE(zero(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_zero(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_zero(cons_zero(z0)))) -> c3(ACTIVE(zero(zero(encArg(z0)))), ENCARG(cons_zero(cons_zero(z0)))) ENCARG(cons_active(cons_zero(cons_s(z0)))) -> c3(ACTIVE(zero(s(encArg(z0)))), ENCARG(cons_zero(cons_s(z0)))) ENCARG(cons_active(cons_zero(cons_prod(z0, z1)))) -> c3(ACTIVE(zero(prod(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_prod(z0, z1)))) ENCARG(cons_active(cons_zero(cons_p(z0)))) -> c3(ACTIVE(zero(p(encArg(z0)))), ENCARG(cons_zero(cons_p(z0)))) ENCARG(cons_active(cons_zero(cons_add(z0, z1)))) -> c3(ACTIVE(zero(add(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_add(z0, z1)))) ENCARG(cons_active(cons_zero(0))) -> c3(ACTIVE(zero(0))) ENCARG(cons_active(cons_s(cons_active(z0)))) -> c3(ACTIVE(s(active(encArg(z0)))), ENCARG(cons_s(cons_active(z0)))) ENCARG(cons_active(cons_s(cons_mark(z0)))) -> c3(ACTIVE(s(mark(encArg(z0)))), ENCARG(cons_s(cons_mark(z0)))) ENCARG(cons_active(cons_s(cons_fact(z0)))) -> c3(ACTIVE(s(fact(encArg(z0)))), ENCARG(cons_s(cons_fact(z0)))) ENCARG(cons_active(cons_s(cons_if(z0, z1, z2)))) -> c3(ACTIVE(s(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_s(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_s(cons_zero(z0)))) -> c3(ACTIVE(s(zero(encArg(z0)))), ENCARG(cons_s(cons_zero(z0)))) ENCARG(cons_active(cons_s(cons_s(z0)))) -> c3(ACTIVE(s(s(encArg(z0)))), ENCARG(cons_s(cons_s(z0)))) ENCARG(cons_active(cons_s(cons_prod(z0, z1)))) -> c3(ACTIVE(s(prod(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_prod(z0, z1)))) ENCARG(cons_active(cons_s(cons_p(z0)))) -> c3(ACTIVE(s(p(encArg(z0)))), ENCARG(cons_s(cons_p(z0)))) ENCARG(cons_active(cons_s(cons_add(z0, z1)))) -> c3(ACTIVE(s(add(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_add(z0, z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4, c_1, c1_1, c3_1 ---------------------------------------- (149) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCARG(cons_active(cons_prod(z0, z1))) -> c3(ACTIVE(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) by ENCARG(cons_active(cons_prod(x0, 0))) -> c3(ACTIVE(prod(encArg(x0), 0)), ENCARG(cons_prod(x0, 0))) ENCARG(cons_active(cons_prod(x0, true))) -> c3(ACTIVE(prod(encArg(x0), true)), ENCARG(cons_prod(x0, true))) ENCARG(cons_active(cons_prod(x0, false))) -> c3(ACTIVE(prod(encArg(x0), false)), ENCARG(cons_prod(x0, false))) ENCARG(cons_active(cons_prod(x0, cons_active(z0)))) -> c3(ACTIVE(prod(encArg(x0), active(encArg(z0)))), ENCARG(cons_prod(x0, cons_active(z0)))) ENCARG(cons_active(cons_prod(x0, cons_mark(z0)))) -> c3(ACTIVE(prod(encArg(x0), mark(encArg(z0)))), ENCARG(cons_prod(x0, cons_mark(z0)))) ENCARG(cons_active(cons_prod(x0, cons_fact(z0)))) -> c3(ACTIVE(prod(encArg(x0), fact(encArg(z0)))), ENCARG(cons_prod(x0, cons_fact(z0)))) ENCARG(cons_active(cons_prod(x0, cons_if(z0, z1, z2)))) -> c3(ACTIVE(prod(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_prod(x0, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_prod(x0, cons_zero(z0)))) -> c3(ACTIVE(prod(encArg(x0), zero(encArg(z0)))), ENCARG(cons_prod(x0, cons_zero(z0)))) ENCARG(cons_active(cons_prod(x0, cons_s(z0)))) -> c3(ACTIVE(prod(encArg(x0), s(encArg(z0)))), ENCARG(cons_prod(x0, cons_s(z0)))) ENCARG(cons_active(cons_prod(x0, cons_prod(z0, z1)))) -> c3(ACTIVE(prod(encArg(x0), prod(encArg(z0), encArg(z1)))), ENCARG(cons_prod(x0, cons_prod(z0, z1)))) ENCARG(cons_active(cons_prod(x0, cons_p(z0)))) -> c3(ACTIVE(prod(encArg(x0), p(encArg(z0)))), ENCARG(cons_prod(x0, cons_p(z0)))) ENCARG(cons_active(cons_prod(x0, cons_add(z0, z1)))) -> c3(ACTIVE(prod(encArg(x0), add(encArg(z0), encArg(z1)))), ENCARG(cons_prod(x0, cons_add(z0, z1)))) ENCARG(cons_active(cons_prod(0, x1))) -> c3(ACTIVE(prod(0, encArg(x1))), ENCARG(cons_prod(0, x1))) ENCARG(cons_active(cons_prod(true, x1))) -> c3(ACTIVE(prod(true, encArg(x1))), ENCARG(cons_prod(true, x1))) ENCARG(cons_active(cons_prod(false, x1))) -> c3(ACTIVE(prod(false, encArg(x1))), ENCARG(cons_prod(false, x1))) ENCARG(cons_active(cons_prod(cons_active(z0), x1))) -> c3(ACTIVE(prod(active(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_active(z0), x1))) ENCARG(cons_active(cons_prod(cons_mark(z0), x1))) -> c3(ACTIVE(prod(mark(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_mark(z0), x1))) ENCARG(cons_active(cons_prod(cons_fact(z0), x1))) -> c3(ACTIVE(prod(fact(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_fact(z0), x1))) ENCARG(cons_active(cons_prod(cons_if(z0, z1, z2), x1))) -> c3(ACTIVE(prod(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))), ENCARG(cons_prod(cons_if(z0, z1, z2), x1))) ENCARG(cons_active(cons_prod(cons_zero(z0), x1))) -> c3(ACTIVE(prod(zero(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_zero(z0), x1))) ENCARG(cons_active(cons_prod(cons_s(z0), x1))) -> c3(ACTIVE(prod(s(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_s(z0), x1))) ENCARG(cons_active(cons_prod(cons_prod(z0, z1), x1))) -> c3(ACTIVE(prod(prod(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_prod(cons_prod(z0, z1), x1))) ENCARG(cons_active(cons_prod(cons_p(z0), x1))) -> c3(ACTIVE(prod(p(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_p(z0), x1))) ENCARG(cons_active(cons_prod(cons_add(z0, z1), x1))) -> c3(ACTIVE(prod(add(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_prod(cons_add(z0, z1), x1))) ---------------------------------------- (150) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, 0) -> c(PROD(encArg(x0), 0)) ENCODE_PROD(x0, true) -> c(PROD(encArg(x0), true)) ENCODE_PROD(x0, false) -> c(PROD(encArg(x0), false)) ENCODE_PROD(x0, cons_active(z0)) -> c(PROD(encArg(x0), active(encArg(z0)))) ENCODE_PROD(x0, cons_mark(z0)) -> c(PROD(encArg(x0), mark(encArg(z0)))) ENCODE_PROD(x0, cons_fact(z0)) -> c(PROD(encArg(x0), fact(encArg(z0)))) ENCODE_PROD(x0, cons_if(z0, z1, z2)) -> c(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_PROD(x0, cons_zero(z0)) -> c(PROD(encArg(x0), zero(encArg(z0)))) ENCODE_PROD(x0, cons_s(z0)) -> c(PROD(encArg(x0), s(encArg(z0)))) ENCODE_PROD(x0, cons_prod(z0, z1)) -> c(PROD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, cons_p(z0)) -> c(PROD(encArg(x0), p(encArg(z0)))) ENCODE_PROD(x0, cons_add(z0, z1)) -> c(PROD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_PROD(0, x1) -> c(PROD(0, encArg(x1))) ENCODE_PROD(true, x1) -> c(PROD(true, encArg(x1))) ENCODE_PROD(false, x1) -> c(PROD(false, encArg(x1))) ENCODE_PROD(cons_active(z0), x1) -> c(PROD(active(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_mark(z0), x1) -> c(PROD(mark(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_fact(z0), x1) -> c(PROD(fact(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_if(z0, z1, z2), x1) -> c(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_PROD(cons_zero(z0), x1) -> c(PROD(zero(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_s(z0), x1) -> c(PROD(s(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_prod(z0, z1), x1) -> c(PROD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_PROD(cons_p(z0), x1) -> c(PROD(p(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_add(z0, z1), x1) -> c(PROD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_P(cons_active(z0)) -> c(P(active(encArg(z0)))) ENCODE_P(cons_mark(z0)) -> c(P(mark(encArg(z0)))) ENCODE_P(cons_fact(z0)) -> c(P(fact(encArg(z0)))) ENCODE_P(cons_if(z0, z1, z2)) -> c(P(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_P(cons_zero(z0)) -> c(P(zero(encArg(z0)))) ENCODE_P(cons_s(z0)) -> c(P(s(encArg(z0)))) ENCODE_P(cons_prod(z0, z1)) -> c(P(prod(encArg(z0), encArg(z1)))) ENCODE_P(cons_p(z0)) -> c(P(p(encArg(z0)))) ENCODE_P(cons_add(z0, z1)) -> c(P(add(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, 0) -> c(ADD(encArg(x0), 0)) ENCODE_ADD(x0, true) -> c(ADD(encArg(x0), true)) ENCODE_ADD(x0, false) -> c(ADD(encArg(x0), false)) ENCODE_ADD(x0, cons_active(z0)) -> c(ADD(encArg(x0), active(encArg(z0)))) ENCODE_ADD(x0, cons_mark(z0)) -> c(ADD(encArg(x0), mark(encArg(z0)))) ENCODE_ADD(x0, cons_fact(z0)) -> c(ADD(encArg(x0), fact(encArg(z0)))) ENCODE_ADD(x0, cons_if(z0, z1, z2)) -> c(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ADD(x0, cons_zero(z0)) -> c(ADD(encArg(x0), zero(encArg(z0)))) ENCODE_ADD(x0, cons_s(z0)) -> c(ADD(encArg(x0), s(encArg(z0)))) ENCODE_ADD(x0, cons_prod(z0, z1)) -> c(ADD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, cons_p(z0)) -> c(ADD(encArg(x0), p(encArg(z0)))) ENCODE_ADD(x0, cons_add(z0, z1)) -> c(ADD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_ADD(0, x1) -> c(ADD(0, encArg(x1))) ENCODE_ADD(true, x1) -> c(ADD(true, encArg(x1))) ENCODE_ADD(false, x1) -> c(ADD(false, encArg(x1))) ENCODE_ADD(cons_active(z0), x1) -> c(ADD(active(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_mark(z0), x1) -> c(ADD(mark(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_fact(z0), x1) -> c(ADD(fact(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_if(z0, z1, z2), x1) -> c(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_ADD(cons_zero(z0), x1) -> c(ADD(zero(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_s(z0), x1) -> c(ADD(s(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_prod(z0, z1), x1) -> c(ADD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_ADD(cons_p(z0), x1) -> c(ADD(p(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_add(z0, z1), x1) -> c(ADD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCARG(cons_active(cons_active(cons_active(z0)))) -> c3(ACTIVE(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_active(cons_active(cons_mark(z0)))) -> c3(ACTIVE(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_active(cons_active(cons_fact(z0)))) -> c3(ACTIVE(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_active(cons_active(cons_if(z0, z1, z2)))) -> c3(ACTIVE(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_active(cons_zero(z0)))) -> c3(ACTIVE(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_active(cons_active(cons_s(z0)))) -> c3(ACTIVE(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_active(cons_active(cons_prod(z0, z1)))) -> c3(ACTIVE(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_active(cons_active(cons_p(z0)))) -> c3(ACTIVE(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_active(cons_active(cons_add(z0, z1)))) -> c3(ACTIVE(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(cons_active(z0)))) -> c3(ACTIVE(mark(active(encArg(z0)))), ENCARG(cons_mark(cons_active(z0)))) ENCARG(cons_active(cons_mark(cons_mark(z0)))) -> c3(ACTIVE(mark(mark(encArg(z0)))), ENCARG(cons_mark(cons_mark(z0)))) ENCARG(cons_active(cons_mark(cons_fact(z0)))) -> c3(ACTIVE(mark(fact(encArg(z0)))), ENCARG(cons_mark(cons_fact(z0)))) ENCARG(cons_active(cons_mark(cons_if(z0, z1, z2)))) -> c3(ACTIVE(mark(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_mark(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_mark(cons_zero(z0)))) -> c3(ACTIVE(mark(zero(encArg(z0)))), ENCARG(cons_mark(cons_zero(z0)))) ENCARG(cons_active(cons_mark(cons_s(z0)))) -> c3(ACTIVE(mark(s(encArg(z0)))), ENCARG(cons_mark(cons_s(z0)))) ENCARG(cons_active(cons_mark(cons_prod(z0, z1)))) -> c3(ACTIVE(mark(prod(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_prod(z0, z1)))) ENCARG(cons_active(cons_mark(cons_p(z0)))) -> c3(ACTIVE(mark(p(encArg(z0)))), ENCARG(cons_mark(cons_p(z0)))) ENCARG(cons_active(cons_mark(cons_add(z0, z1)))) -> c3(ACTIVE(mark(add(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(0))) -> c1(ACTIVE(mark(0))) ENCARG(cons_active(cons_mark(0))) -> c1(ENCARG(cons_mark(0))) ENCARG(cons_active(cons_mark(true))) -> c1(ACTIVE(mark(true))) ENCARG(cons_active(cons_mark(true))) -> c1(ENCARG(cons_mark(true))) ENCARG(cons_active(cons_mark(false))) -> c1(ACTIVE(mark(false))) ENCARG(cons_active(cons_mark(false))) -> c1(ENCARG(cons_mark(false))) ENCARG(cons_active(cons_if(x0, x1, 0))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), 0)), ENCARG(cons_if(x0, x1, 0))) ENCARG(cons_active(cons_if(x0, x1, true))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), true)), ENCARG(cons_if(x0, x1, true))) ENCARG(cons_active(cons_if(x0, x1, false))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), false)), ENCARG(cons_if(x0, x1, false))) ENCARG(cons_active(cons_if(x0, x1, cons_active(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), active(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_active(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_mark(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), mark(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_mark(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_fact(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), fact(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_fact(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_if(z0, z1, z2)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_if(x0, x1, cons_zero(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), zero(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_zero(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_s(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), s(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_s(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_prod(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_prod(z0, z1)))) ENCARG(cons_active(cons_if(x0, x1, cons_p(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), p(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_p(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_add(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_add(z0, z1)))) ENCARG(cons_active(cons_if(x0, 0, x2))) -> c3(ACTIVE(if(encArg(x0), 0, encArg(x2))), ENCARG(cons_if(x0, 0, x2))) ENCARG(cons_active(cons_if(x0, true, x2))) -> c3(ACTIVE(if(encArg(x0), true, encArg(x2))), ENCARG(cons_if(x0, true, x2))) ENCARG(cons_active(cons_if(x0, false, x2))) -> c3(ACTIVE(if(encArg(x0), false, encArg(x2))), ENCARG(cons_if(x0, false, x2))) ENCARG(cons_active(cons_if(x0, cons_active(z0), x2))) -> c3(ACTIVE(if(encArg(x0), active(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_active(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_mark(z0), x2))) -> c3(ACTIVE(if(encArg(x0), mark(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_mark(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_fact(z0), x2))) -> c3(ACTIVE(if(encArg(x0), fact(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_fact(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_if(z0, z1, z2), x2))) -> c3(ACTIVE(if(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))), ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2))) ENCARG(cons_active(cons_if(x0, cons_zero(z0), x2))) -> c3(ACTIVE(if(encArg(x0), zero(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_zero(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_s(z0), x2))) -> c3(ACTIVE(if(encArg(x0), s(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_s(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_prod(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_prod(z0, z1), x2))) ENCARG(cons_active(cons_if(x0, cons_p(z0), x2))) -> c3(ACTIVE(if(encArg(x0), p(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_p(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_add(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_add(z0, z1), x2))) ENCARG(cons_active(cons_if(0, x1, x2))) -> c3(ACTIVE(if(0, encArg(x1), encArg(x2))), ENCARG(cons_if(0, x1, x2))) ENCARG(cons_active(cons_if(true, x1, x2))) -> c3(ACTIVE(if(true, encArg(x1), encArg(x2))), ENCARG(cons_if(true, x1, x2))) ENCARG(cons_active(cons_if(false, x1, x2))) -> c3(ACTIVE(if(false, encArg(x1), encArg(x2))), ENCARG(cons_if(false, x1, x2))) ENCARG(cons_active(cons_if(cons_active(z0), x1, x2))) -> c3(ACTIVE(if(active(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_active(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_mark(z0), x1, x2))) -> c3(ACTIVE(if(mark(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_mark(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_fact(z0), x1, x2))) -> c3(ACTIVE(if(fact(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_fact(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_if(z0, z1, z2), x1, x2))) -> c3(ACTIVE(if(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2))) ENCARG(cons_active(cons_if(cons_zero(z0), x1, x2))) -> c3(ACTIVE(if(zero(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_zero(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_s(z0), x1, x2))) -> c3(ACTIVE(if(s(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_s(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_prod(z0, z1), x1, x2))) -> c3(ACTIVE(if(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_prod(z0, z1), x1, x2))) ENCARG(cons_active(cons_if(cons_p(z0), x1, x2))) -> c3(ACTIVE(if(p(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_p(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_add(z0, z1), x1, x2))) -> c3(ACTIVE(if(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_add(z0, z1), x1, x2))) ENCARG(cons_active(cons_zero(cons_active(z0)))) -> c3(ACTIVE(zero(active(encArg(z0)))), ENCARG(cons_zero(cons_active(z0)))) ENCARG(cons_active(cons_zero(cons_mark(z0)))) -> c3(ACTIVE(zero(mark(encArg(z0)))), ENCARG(cons_zero(cons_mark(z0)))) ENCARG(cons_active(cons_zero(cons_fact(z0)))) -> c3(ACTIVE(zero(fact(encArg(z0)))), ENCARG(cons_zero(cons_fact(z0)))) ENCARG(cons_active(cons_zero(cons_if(z0, z1, z2)))) -> c3(ACTIVE(zero(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_zero(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_zero(cons_zero(z0)))) -> c3(ACTIVE(zero(zero(encArg(z0)))), ENCARG(cons_zero(cons_zero(z0)))) ENCARG(cons_active(cons_zero(cons_s(z0)))) -> c3(ACTIVE(zero(s(encArg(z0)))), ENCARG(cons_zero(cons_s(z0)))) ENCARG(cons_active(cons_zero(cons_prod(z0, z1)))) -> c3(ACTIVE(zero(prod(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_prod(z0, z1)))) ENCARG(cons_active(cons_zero(cons_p(z0)))) -> c3(ACTIVE(zero(p(encArg(z0)))), ENCARG(cons_zero(cons_p(z0)))) ENCARG(cons_active(cons_zero(cons_add(z0, z1)))) -> c3(ACTIVE(zero(add(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_add(z0, z1)))) ENCARG(cons_active(cons_zero(0))) -> c3(ACTIVE(zero(0))) ENCARG(cons_active(cons_s(cons_active(z0)))) -> c3(ACTIVE(s(active(encArg(z0)))), ENCARG(cons_s(cons_active(z0)))) ENCARG(cons_active(cons_s(cons_mark(z0)))) -> c3(ACTIVE(s(mark(encArg(z0)))), ENCARG(cons_s(cons_mark(z0)))) ENCARG(cons_active(cons_s(cons_fact(z0)))) -> c3(ACTIVE(s(fact(encArg(z0)))), ENCARG(cons_s(cons_fact(z0)))) ENCARG(cons_active(cons_s(cons_if(z0, z1, z2)))) -> c3(ACTIVE(s(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_s(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_s(cons_zero(z0)))) -> c3(ACTIVE(s(zero(encArg(z0)))), ENCARG(cons_s(cons_zero(z0)))) ENCARG(cons_active(cons_s(cons_s(z0)))) -> c3(ACTIVE(s(s(encArg(z0)))), ENCARG(cons_s(cons_s(z0)))) ENCARG(cons_active(cons_s(cons_prod(z0, z1)))) -> c3(ACTIVE(s(prod(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_prod(z0, z1)))) ENCARG(cons_active(cons_s(cons_p(z0)))) -> c3(ACTIVE(s(p(encArg(z0)))), ENCARG(cons_s(cons_p(z0)))) ENCARG(cons_active(cons_s(cons_add(z0, z1)))) -> c3(ACTIVE(s(add(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_add(z0, z1)))) ENCARG(cons_active(cons_prod(x0, 0))) -> c3(ACTIVE(prod(encArg(x0), 0)), ENCARG(cons_prod(x0, 0))) ENCARG(cons_active(cons_prod(x0, true))) -> c3(ACTIVE(prod(encArg(x0), true)), ENCARG(cons_prod(x0, true))) ENCARG(cons_active(cons_prod(x0, false))) -> c3(ACTIVE(prod(encArg(x0), false)), ENCARG(cons_prod(x0, false))) ENCARG(cons_active(cons_prod(x0, cons_active(z0)))) -> c3(ACTIVE(prod(encArg(x0), active(encArg(z0)))), ENCARG(cons_prod(x0, cons_active(z0)))) ENCARG(cons_active(cons_prod(x0, cons_mark(z0)))) -> c3(ACTIVE(prod(encArg(x0), mark(encArg(z0)))), ENCARG(cons_prod(x0, cons_mark(z0)))) ENCARG(cons_active(cons_prod(x0, cons_fact(z0)))) -> c3(ACTIVE(prod(encArg(x0), fact(encArg(z0)))), ENCARG(cons_prod(x0, cons_fact(z0)))) ENCARG(cons_active(cons_prod(x0, cons_if(z0, z1, z2)))) -> c3(ACTIVE(prod(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_prod(x0, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_prod(x0, cons_zero(z0)))) -> c3(ACTIVE(prod(encArg(x0), zero(encArg(z0)))), ENCARG(cons_prod(x0, cons_zero(z0)))) ENCARG(cons_active(cons_prod(x0, cons_s(z0)))) -> c3(ACTIVE(prod(encArg(x0), s(encArg(z0)))), ENCARG(cons_prod(x0, cons_s(z0)))) ENCARG(cons_active(cons_prod(x0, cons_prod(z0, z1)))) -> c3(ACTIVE(prod(encArg(x0), prod(encArg(z0), encArg(z1)))), ENCARG(cons_prod(x0, cons_prod(z0, z1)))) ENCARG(cons_active(cons_prod(x0, cons_p(z0)))) -> c3(ACTIVE(prod(encArg(x0), p(encArg(z0)))), ENCARG(cons_prod(x0, cons_p(z0)))) ENCARG(cons_active(cons_prod(x0, cons_add(z0, z1)))) -> c3(ACTIVE(prod(encArg(x0), add(encArg(z0), encArg(z1)))), ENCARG(cons_prod(x0, cons_add(z0, z1)))) ENCARG(cons_active(cons_prod(0, x1))) -> c3(ACTIVE(prod(0, encArg(x1))), ENCARG(cons_prod(0, x1))) ENCARG(cons_active(cons_prod(true, x1))) -> c3(ACTIVE(prod(true, encArg(x1))), ENCARG(cons_prod(true, x1))) ENCARG(cons_active(cons_prod(false, x1))) -> c3(ACTIVE(prod(false, encArg(x1))), ENCARG(cons_prod(false, x1))) ENCARG(cons_active(cons_prod(cons_active(z0), x1))) -> c3(ACTIVE(prod(active(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_active(z0), x1))) ENCARG(cons_active(cons_prod(cons_mark(z0), x1))) -> c3(ACTIVE(prod(mark(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_mark(z0), x1))) ENCARG(cons_active(cons_prod(cons_fact(z0), x1))) -> c3(ACTIVE(prod(fact(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_fact(z0), x1))) ENCARG(cons_active(cons_prod(cons_if(z0, z1, z2), x1))) -> c3(ACTIVE(prod(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))), ENCARG(cons_prod(cons_if(z0, z1, z2), x1))) ENCARG(cons_active(cons_prod(cons_zero(z0), x1))) -> c3(ACTIVE(prod(zero(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_zero(z0), x1))) ENCARG(cons_active(cons_prod(cons_s(z0), x1))) -> c3(ACTIVE(prod(s(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_s(z0), x1))) ENCARG(cons_active(cons_prod(cons_prod(z0, z1), x1))) -> c3(ACTIVE(prod(prod(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_prod(cons_prod(z0, z1), x1))) ENCARG(cons_active(cons_prod(cons_p(z0), x1))) -> c3(ACTIVE(prod(p(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_p(z0), x1))) ENCARG(cons_active(cons_prod(cons_add(z0, z1), x1))) -> c3(ACTIVE(prod(add(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_prod(cons_add(z0, z1), x1))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4, c_1, c1_1, c3_1 ---------------------------------------- (151) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCARG(cons_active(cons_p(z0))) -> c3(ACTIVE(p(encArg(z0))), ENCARG(cons_p(z0))) by ENCARG(cons_active(cons_p(0))) -> c3(ACTIVE(p(0)), ENCARG(cons_p(0))) ENCARG(cons_active(cons_p(true))) -> c3(ACTIVE(p(true)), ENCARG(cons_p(true))) ENCARG(cons_active(cons_p(false))) -> c3(ACTIVE(p(false)), ENCARG(cons_p(false))) ENCARG(cons_active(cons_p(cons_active(z0)))) -> c3(ACTIVE(p(active(encArg(z0)))), ENCARG(cons_p(cons_active(z0)))) ENCARG(cons_active(cons_p(cons_mark(z0)))) -> c3(ACTIVE(p(mark(encArg(z0)))), ENCARG(cons_p(cons_mark(z0)))) ENCARG(cons_active(cons_p(cons_fact(z0)))) -> c3(ACTIVE(p(fact(encArg(z0)))), ENCARG(cons_p(cons_fact(z0)))) ENCARG(cons_active(cons_p(cons_if(z0, z1, z2)))) -> c3(ACTIVE(p(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_p(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_p(cons_zero(z0)))) -> c3(ACTIVE(p(zero(encArg(z0)))), ENCARG(cons_p(cons_zero(z0)))) ENCARG(cons_active(cons_p(cons_s(z0)))) -> c3(ACTIVE(p(s(encArg(z0)))), ENCARG(cons_p(cons_s(z0)))) ENCARG(cons_active(cons_p(cons_prod(z0, z1)))) -> c3(ACTIVE(p(prod(encArg(z0), encArg(z1)))), ENCARG(cons_p(cons_prod(z0, z1)))) ENCARG(cons_active(cons_p(cons_p(z0)))) -> c3(ACTIVE(p(p(encArg(z0)))), ENCARG(cons_p(cons_p(z0)))) ENCARG(cons_active(cons_p(cons_add(z0, z1)))) -> c3(ACTIVE(p(add(encArg(z0), encArg(z1)))), ENCARG(cons_p(cons_add(z0, z1)))) ---------------------------------------- (152) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, 0) -> c(PROD(encArg(x0), 0)) ENCODE_PROD(x0, true) -> c(PROD(encArg(x0), true)) ENCODE_PROD(x0, false) -> c(PROD(encArg(x0), false)) ENCODE_PROD(x0, cons_active(z0)) -> c(PROD(encArg(x0), active(encArg(z0)))) ENCODE_PROD(x0, cons_mark(z0)) -> c(PROD(encArg(x0), mark(encArg(z0)))) ENCODE_PROD(x0, cons_fact(z0)) -> c(PROD(encArg(x0), fact(encArg(z0)))) ENCODE_PROD(x0, cons_if(z0, z1, z2)) -> c(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_PROD(x0, cons_zero(z0)) -> c(PROD(encArg(x0), zero(encArg(z0)))) ENCODE_PROD(x0, cons_s(z0)) -> c(PROD(encArg(x0), s(encArg(z0)))) ENCODE_PROD(x0, cons_prod(z0, z1)) -> c(PROD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, cons_p(z0)) -> c(PROD(encArg(x0), p(encArg(z0)))) ENCODE_PROD(x0, cons_add(z0, z1)) -> c(PROD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_PROD(0, x1) -> c(PROD(0, encArg(x1))) ENCODE_PROD(true, x1) -> c(PROD(true, encArg(x1))) ENCODE_PROD(false, x1) -> c(PROD(false, encArg(x1))) ENCODE_PROD(cons_active(z0), x1) -> c(PROD(active(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_mark(z0), x1) -> c(PROD(mark(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_fact(z0), x1) -> c(PROD(fact(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_if(z0, z1, z2), x1) -> c(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_PROD(cons_zero(z0), x1) -> c(PROD(zero(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_s(z0), x1) -> c(PROD(s(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_prod(z0, z1), x1) -> c(PROD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_PROD(cons_p(z0), x1) -> c(PROD(p(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_add(z0, z1), x1) -> c(PROD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_P(cons_active(z0)) -> c(P(active(encArg(z0)))) ENCODE_P(cons_mark(z0)) -> c(P(mark(encArg(z0)))) ENCODE_P(cons_fact(z0)) -> c(P(fact(encArg(z0)))) ENCODE_P(cons_if(z0, z1, z2)) -> c(P(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_P(cons_zero(z0)) -> c(P(zero(encArg(z0)))) ENCODE_P(cons_s(z0)) -> c(P(s(encArg(z0)))) ENCODE_P(cons_prod(z0, z1)) -> c(P(prod(encArg(z0), encArg(z1)))) ENCODE_P(cons_p(z0)) -> c(P(p(encArg(z0)))) ENCODE_P(cons_add(z0, z1)) -> c(P(add(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, 0) -> c(ADD(encArg(x0), 0)) ENCODE_ADD(x0, true) -> c(ADD(encArg(x0), true)) ENCODE_ADD(x0, false) -> c(ADD(encArg(x0), false)) ENCODE_ADD(x0, cons_active(z0)) -> c(ADD(encArg(x0), active(encArg(z0)))) ENCODE_ADD(x0, cons_mark(z0)) -> c(ADD(encArg(x0), mark(encArg(z0)))) ENCODE_ADD(x0, cons_fact(z0)) -> c(ADD(encArg(x0), fact(encArg(z0)))) ENCODE_ADD(x0, cons_if(z0, z1, z2)) -> c(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ADD(x0, cons_zero(z0)) -> c(ADD(encArg(x0), zero(encArg(z0)))) ENCODE_ADD(x0, cons_s(z0)) -> c(ADD(encArg(x0), s(encArg(z0)))) ENCODE_ADD(x0, cons_prod(z0, z1)) -> c(ADD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, cons_p(z0)) -> c(ADD(encArg(x0), p(encArg(z0)))) ENCODE_ADD(x0, cons_add(z0, z1)) -> c(ADD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_ADD(0, x1) -> c(ADD(0, encArg(x1))) ENCODE_ADD(true, x1) -> c(ADD(true, encArg(x1))) ENCODE_ADD(false, x1) -> c(ADD(false, encArg(x1))) ENCODE_ADD(cons_active(z0), x1) -> c(ADD(active(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_mark(z0), x1) -> c(ADD(mark(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_fact(z0), x1) -> c(ADD(fact(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_if(z0, z1, z2), x1) -> c(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_ADD(cons_zero(z0), x1) -> c(ADD(zero(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_s(z0), x1) -> c(ADD(s(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_prod(z0, z1), x1) -> c(ADD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_ADD(cons_p(z0), x1) -> c(ADD(p(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_add(z0, z1), x1) -> c(ADD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCARG(cons_active(cons_active(cons_active(z0)))) -> c3(ACTIVE(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_active(cons_active(cons_mark(z0)))) -> c3(ACTIVE(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_active(cons_active(cons_fact(z0)))) -> c3(ACTIVE(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_active(cons_active(cons_if(z0, z1, z2)))) -> c3(ACTIVE(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_active(cons_zero(z0)))) -> c3(ACTIVE(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_active(cons_active(cons_s(z0)))) -> c3(ACTIVE(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_active(cons_active(cons_prod(z0, z1)))) -> c3(ACTIVE(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_active(cons_active(cons_p(z0)))) -> c3(ACTIVE(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_active(cons_active(cons_add(z0, z1)))) -> c3(ACTIVE(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(cons_active(z0)))) -> c3(ACTIVE(mark(active(encArg(z0)))), ENCARG(cons_mark(cons_active(z0)))) ENCARG(cons_active(cons_mark(cons_mark(z0)))) -> c3(ACTIVE(mark(mark(encArg(z0)))), ENCARG(cons_mark(cons_mark(z0)))) ENCARG(cons_active(cons_mark(cons_fact(z0)))) -> c3(ACTIVE(mark(fact(encArg(z0)))), ENCARG(cons_mark(cons_fact(z0)))) ENCARG(cons_active(cons_mark(cons_if(z0, z1, z2)))) -> c3(ACTIVE(mark(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_mark(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_mark(cons_zero(z0)))) -> c3(ACTIVE(mark(zero(encArg(z0)))), ENCARG(cons_mark(cons_zero(z0)))) ENCARG(cons_active(cons_mark(cons_s(z0)))) -> c3(ACTIVE(mark(s(encArg(z0)))), ENCARG(cons_mark(cons_s(z0)))) ENCARG(cons_active(cons_mark(cons_prod(z0, z1)))) -> c3(ACTIVE(mark(prod(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_prod(z0, z1)))) ENCARG(cons_active(cons_mark(cons_p(z0)))) -> c3(ACTIVE(mark(p(encArg(z0)))), ENCARG(cons_mark(cons_p(z0)))) ENCARG(cons_active(cons_mark(cons_add(z0, z1)))) -> c3(ACTIVE(mark(add(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(0))) -> c1(ACTIVE(mark(0))) ENCARG(cons_active(cons_mark(0))) -> c1(ENCARG(cons_mark(0))) ENCARG(cons_active(cons_mark(true))) -> c1(ACTIVE(mark(true))) ENCARG(cons_active(cons_mark(true))) -> c1(ENCARG(cons_mark(true))) ENCARG(cons_active(cons_mark(false))) -> c1(ACTIVE(mark(false))) ENCARG(cons_active(cons_mark(false))) -> c1(ENCARG(cons_mark(false))) ENCARG(cons_active(cons_if(x0, x1, 0))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), 0)), ENCARG(cons_if(x0, x1, 0))) ENCARG(cons_active(cons_if(x0, x1, true))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), true)), ENCARG(cons_if(x0, x1, true))) ENCARG(cons_active(cons_if(x0, x1, false))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), false)), ENCARG(cons_if(x0, x1, false))) ENCARG(cons_active(cons_if(x0, x1, cons_active(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), active(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_active(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_mark(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), mark(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_mark(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_fact(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), fact(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_fact(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_if(z0, z1, z2)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_if(x0, x1, cons_zero(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), zero(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_zero(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_s(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), s(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_s(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_prod(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_prod(z0, z1)))) ENCARG(cons_active(cons_if(x0, x1, cons_p(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), p(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_p(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_add(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_add(z0, z1)))) ENCARG(cons_active(cons_if(x0, 0, x2))) -> c3(ACTIVE(if(encArg(x0), 0, encArg(x2))), ENCARG(cons_if(x0, 0, x2))) ENCARG(cons_active(cons_if(x0, true, x2))) -> c3(ACTIVE(if(encArg(x0), true, encArg(x2))), ENCARG(cons_if(x0, true, x2))) ENCARG(cons_active(cons_if(x0, false, x2))) -> c3(ACTIVE(if(encArg(x0), false, encArg(x2))), ENCARG(cons_if(x0, false, x2))) ENCARG(cons_active(cons_if(x0, cons_active(z0), x2))) -> c3(ACTIVE(if(encArg(x0), active(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_active(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_mark(z0), x2))) -> c3(ACTIVE(if(encArg(x0), mark(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_mark(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_fact(z0), x2))) -> c3(ACTIVE(if(encArg(x0), fact(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_fact(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_if(z0, z1, z2), x2))) -> c3(ACTIVE(if(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))), ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2))) ENCARG(cons_active(cons_if(x0, cons_zero(z0), x2))) -> c3(ACTIVE(if(encArg(x0), zero(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_zero(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_s(z0), x2))) -> c3(ACTIVE(if(encArg(x0), s(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_s(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_prod(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_prod(z0, z1), x2))) ENCARG(cons_active(cons_if(x0, cons_p(z0), x2))) -> c3(ACTIVE(if(encArg(x0), p(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_p(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_add(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_add(z0, z1), x2))) ENCARG(cons_active(cons_if(0, x1, x2))) -> c3(ACTIVE(if(0, encArg(x1), encArg(x2))), ENCARG(cons_if(0, x1, x2))) ENCARG(cons_active(cons_if(true, x1, x2))) -> c3(ACTIVE(if(true, encArg(x1), encArg(x2))), ENCARG(cons_if(true, x1, x2))) ENCARG(cons_active(cons_if(false, x1, x2))) -> c3(ACTIVE(if(false, encArg(x1), encArg(x2))), ENCARG(cons_if(false, x1, x2))) ENCARG(cons_active(cons_if(cons_active(z0), x1, x2))) -> c3(ACTIVE(if(active(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_active(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_mark(z0), x1, x2))) -> c3(ACTIVE(if(mark(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_mark(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_fact(z0), x1, x2))) -> c3(ACTIVE(if(fact(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_fact(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_if(z0, z1, z2), x1, x2))) -> c3(ACTIVE(if(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2))) ENCARG(cons_active(cons_if(cons_zero(z0), x1, x2))) -> c3(ACTIVE(if(zero(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_zero(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_s(z0), x1, x2))) -> c3(ACTIVE(if(s(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_s(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_prod(z0, z1), x1, x2))) -> c3(ACTIVE(if(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_prod(z0, z1), x1, x2))) ENCARG(cons_active(cons_if(cons_p(z0), x1, x2))) -> c3(ACTIVE(if(p(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_p(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_add(z0, z1), x1, x2))) -> c3(ACTIVE(if(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_add(z0, z1), x1, x2))) ENCARG(cons_active(cons_zero(cons_active(z0)))) -> c3(ACTIVE(zero(active(encArg(z0)))), ENCARG(cons_zero(cons_active(z0)))) ENCARG(cons_active(cons_zero(cons_mark(z0)))) -> c3(ACTIVE(zero(mark(encArg(z0)))), ENCARG(cons_zero(cons_mark(z0)))) ENCARG(cons_active(cons_zero(cons_fact(z0)))) -> c3(ACTIVE(zero(fact(encArg(z0)))), ENCARG(cons_zero(cons_fact(z0)))) ENCARG(cons_active(cons_zero(cons_if(z0, z1, z2)))) -> c3(ACTIVE(zero(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_zero(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_zero(cons_zero(z0)))) -> c3(ACTIVE(zero(zero(encArg(z0)))), ENCARG(cons_zero(cons_zero(z0)))) ENCARG(cons_active(cons_zero(cons_s(z0)))) -> c3(ACTIVE(zero(s(encArg(z0)))), ENCARG(cons_zero(cons_s(z0)))) ENCARG(cons_active(cons_zero(cons_prod(z0, z1)))) -> c3(ACTIVE(zero(prod(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_prod(z0, z1)))) ENCARG(cons_active(cons_zero(cons_p(z0)))) -> c3(ACTIVE(zero(p(encArg(z0)))), ENCARG(cons_zero(cons_p(z0)))) ENCARG(cons_active(cons_zero(cons_add(z0, z1)))) -> c3(ACTIVE(zero(add(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_add(z0, z1)))) ENCARG(cons_active(cons_zero(0))) -> c3(ACTIVE(zero(0))) ENCARG(cons_active(cons_s(cons_active(z0)))) -> c3(ACTIVE(s(active(encArg(z0)))), ENCARG(cons_s(cons_active(z0)))) ENCARG(cons_active(cons_s(cons_mark(z0)))) -> c3(ACTIVE(s(mark(encArg(z0)))), ENCARG(cons_s(cons_mark(z0)))) ENCARG(cons_active(cons_s(cons_fact(z0)))) -> c3(ACTIVE(s(fact(encArg(z0)))), ENCARG(cons_s(cons_fact(z0)))) ENCARG(cons_active(cons_s(cons_if(z0, z1, z2)))) -> c3(ACTIVE(s(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_s(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_s(cons_zero(z0)))) -> c3(ACTIVE(s(zero(encArg(z0)))), ENCARG(cons_s(cons_zero(z0)))) ENCARG(cons_active(cons_s(cons_s(z0)))) -> c3(ACTIVE(s(s(encArg(z0)))), ENCARG(cons_s(cons_s(z0)))) ENCARG(cons_active(cons_s(cons_prod(z0, z1)))) -> c3(ACTIVE(s(prod(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_prod(z0, z1)))) ENCARG(cons_active(cons_s(cons_p(z0)))) -> c3(ACTIVE(s(p(encArg(z0)))), ENCARG(cons_s(cons_p(z0)))) ENCARG(cons_active(cons_s(cons_add(z0, z1)))) -> c3(ACTIVE(s(add(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_add(z0, z1)))) ENCARG(cons_active(cons_prod(x0, 0))) -> c3(ACTIVE(prod(encArg(x0), 0)), ENCARG(cons_prod(x0, 0))) ENCARG(cons_active(cons_prod(x0, true))) -> c3(ACTIVE(prod(encArg(x0), true)), ENCARG(cons_prod(x0, true))) ENCARG(cons_active(cons_prod(x0, false))) -> c3(ACTIVE(prod(encArg(x0), false)), ENCARG(cons_prod(x0, false))) ENCARG(cons_active(cons_prod(x0, cons_active(z0)))) -> c3(ACTIVE(prod(encArg(x0), active(encArg(z0)))), ENCARG(cons_prod(x0, cons_active(z0)))) ENCARG(cons_active(cons_prod(x0, cons_mark(z0)))) -> c3(ACTIVE(prod(encArg(x0), mark(encArg(z0)))), ENCARG(cons_prod(x0, cons_mark(z0)))) ENCARG(cons_active(cons_prod(x0, cons_fact(z0)))) -> c3(ACTIVE(prod(encArg(x0), fact(encArg(z0)))), ENCARG(cons_prod(x0, cons_fact(z0)))) ENCARG(cons_active(cons_prod(x0, cons_if(z0, z1, z2)))) -> c3(ACTIVE(prod(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_prod(x0, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_prod(x0, cons_zero(z0)))) -> c3(ACTIVE(prod(encArg(x0), zero(encArg(z0)))), ENCARG(cons_prod(x0, cons_zero(z0)))) ENCARG(cons_active(cons_prod(x0, cons_s(z0)))) -> c3(ACTIVE(prod(encArg(x0), s(encArg(z0)))), ENCARG(cons_prod(x0, cons_s(z0)))) ENCARG(cons_active(cons_prod(x0, cons_prod(z0, z1)))) -> c3(ACTIVE(prod(encArg(x0), prod(encArg(z0), encArg(z1)))), ENCARG(cons_prod(x0, cons_prod(z0, z1)))) ENCARG(cons_active(cons_prod(x0, cons_p(z0)))) -> c3(ACTIVE(prod(encArg(x0), p(encArg(z0)))), ENCARG(cons_prod(x0, cons_p(z0)))) ENCARG(cons_active(cons_prod(x0, cons_add(z0, z1)))) -> c3(ACTIVE(prod(encArg(x0), add(encArg(z0), encArg(z1)))), ENCARG(cons_prod(x0, cons_add(z0, z1)))) ENCARG(cons_active(cons_prod(0, x1))) -> c3(ACTIVE(prod(0, encArg(x1))), ENCARG(cons_prod(0, x1))) ENCARG(cons_active(cons_prod(true, x1))) -> c3(ACTIVE(prod(true, encArg(x1))), ENCARG(cons_prod(true, x1))) ENCARG(cons_active(cons_prod(false, x1))) -> c3(ACTIVE(prod(false, encArg(x1))), ENCARG(cons_prod(false, x1))) ENCARG(cons_active(cons_prod(cons_active(z0), x1))) -> c3(ACTIVE(prod(active(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_active(z0), x1))) ENCARG(cons_active(cons_prod(cons_mark(z0), x1))) -> c3(ACTIVE(prod(mark(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_mark(z0), x1))) ENCARG(cons_active(cons_prod(cons_fact(z0), x1))) -> c3(ACTIVE(prod(fact(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_fact(z0), x1))) ENCARG(cons_active(cons_prod(cons_if(z0, z1, z2), x1))) -> c3(ACTIVE(prod(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))), ENCARG(cons_prod(cons_if(z0, z1, z2), x1))) ENCARG(cons_active(cons_prod(cons_zero(z0), x1))) -> c3(ACTIVE(prod(zero(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_zero(z0), x1))) ENCARG(cons_active(cons_prod(cons_s(z0), x1))) -> c3(ACTIVE(prod(s(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_s(z0), x1))) ENCARG(cons_active(cons_prod(cons_prod(z0, z1), x1))) -> c3(ACTIVE(prod(prod(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_prod(cons_prod(z0, z1), x1))) ENCARG(cons_active(cons_prod(cons_p(z0), x1))) -> c3(ACTIVE(prod(p(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_p(z0), x1))) ENCARG(cons_active(cons_prod(cons_add(z0, z1), x1))) -> c3(ACTIVE(prod(add(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_prod(cons_add(z0, z1), x1))) ENCARG(cons_active(cons_p(0))) -> c3(ACTIVE(p(0)), ENCARG(cons_p(0))) ENCARG(cons_active(cons_p(true))) -> c3(ACTIVE(p(true)), ENCARG(cons_p(true))) ENCARG(cons_active(cons_p(false))) -> c3(ACTIVE(p(false)), ENCARG(cons_p(false))) ENCARG(cons_active(cons_p(cons_active(z0)))) -> c3(ACTIVE(p(active(encArg(z0)))), ENCARG(cons_p(cons_active(z0)))) ENCARG(cons_active(cons_p(cons_mark(z0)))) -> c3(ACTIVE(p(mark(encArg(z0)))), ENCARG(cons_p(cons_mark(z0)))) ENCARG(cons_active(cons_p(cons_fact(z0)))) -> c3(ACTIVE(p(fact(encArg(z0)))), ENCARG(cons_p(cons_fact(z0)))) ENCARG(cons_active(cons_p(cons_if(z0, z1, z2)))) -> c3(ACTIVE(p(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_p(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_p(cons_zero(z0)))) -> c3(ACTIVE(p(zero(encArg(z0)))), ENCARG(cons_p(cons_zero(z0)))) ENCARG(cons_active(cons_p(cons_s(z0)))) -> c3(ACTIVE(p(s(encArg(z0)))), ENCARG(cons_p(cons_s(z0)))) ENCARG(cons_active(cons_p(cons_prod(z0, z1)))) -> c3(ACTIVE(p(prod(encArg(z0), encArg(z1)))), ENCARG(cons_p(cons_prod(z0, z1)))) ENCARG(cons_active(cons_p(cons_p(z0)))) -> c3(ACTIVE(p(p(encArg(z0)))), ENCARG(cons_p(cons_p(z0)))) ENCARG(cons_active(cons_p(cons_add(z0, z1)))) -> c3(ACTIVE(p(add(encArg(z0), encArg(z1)))), ENCARG(cons_p(cons_add(z0, z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4, c_1, c1_1, c3_1 ---------------------------------------- (153) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing nodes: ENCARG(cons_active(cons_p(true))) -> c3(ACTIVE(p(true)), ENCARG(cons_p(true))) ENCARG(cons_active(cons_p(false))) -> c3(ACTIVE(p(false)), ENCARG(cons_p(false))) ENCARG(cons_active(cons_p(0))) -> c3(ACTIVE(p(0)), ENCARG(cons_p(0))) ---------------------------------------- (154) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, 0) -> c(PROD(encArg(x0), 0)) ENCODE_PROD(x0, true) -> c(PROD(encArg(x0), true)) ENCODE_PROD(x0, false) -> c(PROD(encArg(x0), false)) ENCODE_PROD(x0, cons_active(z0)) -> c(PROD(encArg(x0), active(encArg(z0)))) ENCODE_PROD(x0, cons_mark(z0)) -> c(PROD(encArg(x0), mark(encArg(z0)))) ENCODE_PROD(x0, cons_fact(z0)) -> c(PROD(encArg(x0), fact(encArg(z0)))) ENCODE_PROD(x0, cons_if(z0, z1, z2)) -> c(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_PROD(x0, cons_zero(z0)) -> c(PROD(encArg(x0), zero(encArg(z0)))) ENCODE_PROD(x0, cons_s(z0)) -> c(PROD(encArg(x0), s(encArg(z0)))) ENCODE_PROD(x0, cons_prod(z0, z1)) -> c(PROD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, cons_p(z0)) -> c(PROD(encArg(x0), p(encArg(z0)))) ENCODE_PROD(x0, cons_add(z0, z1)) -> c(PROD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_PROD(0, x1) -> c(PROD(0, encArg(x1))) ENCODE_PROD(true, x1) -> c(PROD(true, encArg(x1))) ENCODE_PROD(false, x1) -> c(PROD(false, encArg(x1))) ENCODE_PROD(cons_active(z0), x1) -> c(PROD(active(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_mark(z0), x1) -> c(PROD(mark(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_fact(z0), x1) -> c(PROD(fact(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_if(z0, z1, z2), x1) -> c(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_PROD(cons_zero(z0), x1) -> c(PROD(zero(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_s(z0), x1) -> c(PROD(s(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_prod(z0, z1), x1) -> c(PROD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_PROD(cons_p(z0), x1) -> c(PROD(p(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_add(z0, z1), x1) -> c(PROD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_P(cons_active(z0)) -> c(P(active(encArg(z0)))) ENCODE_P(cons_mark(z0)) -> c(P(mark(encArg(z0)))) ENCODE_P(cons_fact(z0)) -> c(P(fact(encArg(z0)))) ENCODE_P(cons_if(z0, z1, z2)) -> c(P(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_P(cons_zero(z0)) -> c(P(zero(encArg(z0)))) ENCODE_P(cons_s(z0)) -> c(P(s(encArg(z0)))) ENCODE_P(cons_prod(z0, z1)) -> c(P(prod(encArg(z0), encArg(z1)))) ENCODE_P(cons_p(z0)) -> c(P(p(encArg(z0)))) ENCODE_P(cons_add(z0, z1)) -> c(P(add(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, 0) -> c(ADD(encArg(x0), 0)) ENCODE_ADD(x0, true) -> c(ADD(encArg(x0), true)) ENCODE_ADD(x0, false) -> c(ADD(encArg(x0), false)) ENCODE_ADD(x0, cons_active(z0)) -> c(ADD(encArg(x0), active(encArg(z0)))) ENCODE_ADD(x0, cons_mark(z0)) -> c(ADD(encArg(x0), mark(encArg(z0)))) ENCODE_ADD(x0, cons_fact(z0)) -> c(ADD(encArg(x0), fact(encArg(z0)))) ENCODE_ADD(x0, cons_if(z0, z1, z2)) -> c(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ADD(x0, cons_zero(z0)) -> c(ADD(encArg(x0), zero(encArg(z0)))) ENCODE_ADD(x0, cons_s(z0)) -> c(ADD(encArg(x0), s(encArg(z0)))) ENCODE_ADD(x0, cons_prod(z0, z1)) -> c(ADD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, cons_p(z0)) -> c(ADD(encArg(x0), p(encArg(z0)))) ENCODE_ADD(x0, cons_add(z0, z1)) -> c(ADD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_ADD(0, x1) -> c(ADD(0, encArg(x1))) ENCODE_ADD(true, x1) -> c(ADD(true, encArg(x1))) ENCODE_ADD(false, x1) -> c(ADD(false, encArg(x1))) ENCODE_ADD(cons_active(z0), x1) -> c(ADD(active(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_mark(z0), x1) -> c(ADD(mark(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_fact(z0), x1) -> c(ADD(fact(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_if(z0, z1, z2), x1) -> c(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_ADD(cons_zero(z0), x1) -> c(ADD(zero(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_s(z0), x1) -> c(ADD(s(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_prod(z0, z1), x1) -> c(ADD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_ADD(cons_p(z0), x1) -> c(ADD(p(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_add(z0, z1), x1) -> c(ADD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCARG(cons_active(cons_active(cons_active(z0)))) -> c3(ACTIVE(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_active(cons_active(cons_mark(z0)))) -> c3(ACTIVE(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_active(cons_active(cons_fact(z0)))) -> c3(ACTIVE(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_active(cons_active(cons_if(z0, z1, z2)))) -> c3(ACTIVE(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_active(cons_zero(z0)))) -> c3(ACTIVE(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_active(cons_active(cons_s(z0)))) -> c3(ACTIVE(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_active(cons_active(cons_prod(z0, z1)))) -> c3(ACTIVE(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_active(cons_active(cons_p(z0)))) -> c3(ACTIVE(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_active(cons_active(cons_add(z0, z1)))) -> c3(ACTIVE(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(cons_active(z0)))) -> c3(ACTIVE(mark(active(encArg(z0)))), ENCARG(cons_mark(cons_active(z0)))) ENCARG(cons_active(cons_mark(cons_mark(z0)))) -> c3(ACTIVE(mark(mark(encArg(z0)))), ENCARG(cons_mark(cons_mark(z0)))) ENCARG(cons_active(cons_mark(cons_fact(z0)))) -> c3(ACTIVE(mark(fact(encArg(z0)))), ENCARG(cons_mark(cons_fact(z0)))) ENCARG(cons_active(cons_mark(cons_if(z0, z1, z2)))) -> c3(ACTIVE(mark(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_mark(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_mark(cons_zero(z0)))) -> c3(ACTIVE(mark(zero(encArg(z0)))), ENCARG(cons_mark(cons_zero(z0)))) ENCARG(cons_active(cons_mark(cons_s(z0)))) -> c3(ACTIVE(mark(s(encArg(z0)))), ENCARG(cons_mark(cons_s(z0)))) ENCARG(cons_active(cons_mark(cons_prod(z0, z1)))) -> c3(ACTIVE(mark(prod(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_prod(z0, z1)))) ENCARG(cons_active(cons_mark(cons_p(z0)))) -> c3(ACTIVE(mark(p(encArg(z0)))), ENCARG(cons_mark(cons_p(z0)))) ENCARG(cons_active(cons_mark(cons_add(z0, z1)))) -> c3(ACTIVE(mark(add(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(0))) -> c1(ACTIVE(mark(0))) ENCARG(cons_active(cons_mark(0))) -> c1(ENCARG(cons_mark(0))) ENCARG(cons_active(cons_mark(true))) -> c1(ACTIVE(mark(true))) ENCARG(cons_active(cons_mark(true))) -> c1(ENCARG(cons_mark(true))) ENCARG(cons_active(cons_mark(false))) -> c1(ACTIVE(mark(false))) ENCARG(cons_active(cons_mark(false))) -> c1(ENCARG(cons_mark(false))) ENCARG(cons_active(cons_if(x0, x1, 0))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), 0)), ENCARG(cons_if(x0, x1, 0))) ENCARG(cons_active(cons_if(x0, x1, true))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), true)), ENCARG(cons_if(x0, x1, true))) ENCARG(cons_active(cons_if(x0, x1, false))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), false)), ENCARG(cons_if(x0, x1, false))) ENCARG(cons_active(cons_if(x0, x1, cons_active(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), active(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_active(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_mark(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), mark(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_mark(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_fact(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), fact(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_fact(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_if(z0, z1, z2)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_if(x0, x1, cons_zero(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), zero(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_zero(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_s(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), s(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_s(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_prod(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_prod(z0, z1)))) ENCARG(cons_active(cons_if(x0, x1, cons_p(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), p(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_p(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_add(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_add(z0, z1)))) ENCARG(cons_active(cons_if(x0, 0, x2))) -> c3(ACTIVE(if(encArg(x0), 0, encArg(x2))), ENCARG(cons_if(x0, 0, x2))) ENCARG(cons_active(cons_if(x0, true, x2))) -> c3(ACTIVE(if(encArg(x0), true, encArg(x2))), ENCARG(cons_if(x0, true, x2))) ENCARG(cons_active(cons_if(x0, false, x2))) -> c3(ACTIVE(if(encArg(x0), false, encArg(x2))), ENCARG(cons_if(x0, false, x2))) ENCARG(cons_active(cons_if(x0, cons_active(z0), x2))) -> c3(ACTIVE(if(encArg(x0), active(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_active(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_mark(z0), x2))) -> c3(ACTIVE(if(encArg(x0), mark(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_mark(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_fact(z0), x2))) -> c3(ACTIVE(if(encArg(x0), fact(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_fact(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_if(z0, z1, z2), x2))) -> c3(ACTIVE(if(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))), ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2))) ENCARG(cons_active(cons_if(x0, cons_zero(z0), x2))) -> c3(ACTIVE(if(encArg(x0), zero(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_zero(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_s(z0), x2))) -> c3(ACTIVE(if(encArg(x0), s(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_s(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_prod(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_prod(z0, z1), x2))) ENCARG(cons_active(cons_if(x0, cons_p(z0), x2))) -> c3(ACTIVE(if(encArg(x0), p(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_p(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_add(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_add(z0, z1), x2))) ENCARG(cons_active(cons_if(0, x1, x2))) -> c3(ACTIVE(if(0, encArg(x1), encArg(x2))), ENCARG(cons_if(0, x1, x2))) ENCARG(cons_active(cons_if(true, x1, x2))) -> c3(ACTIVE(if(true, encArg(x1), encArg(x2))), ENCARG(cons_if(true, x1, x2))) ENCARG(cons_active(cons_if(false, x1, x2))) -> c3(ACTIVE(if(false, encArg(x1), encArg(x2))), ENCARG(cons_if(false, x1, x2))) ENCARG(cons_active(cons_if(cons_active(z0), x1, x2))) -> c3(ACTIVE(if(active(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_active(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_mark(z0), x1, x2))) -> c3(ACTIVE(if(mark(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_mark(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_fact(z0), x1, x2))) -> c3(ACTIVE(if(fact(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_fact(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_if(z0, z1, z2), x1, x2))) -> c3(ACTIVE(if(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2))) ENCARG(cons_active(cons_if(cons_zero(z0), x1, x2))) -> c3(ACTIVE(if(zero(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_zero(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_s(z0), x1, x2))) -> c3(ACTIVE(if(s(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_s(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_prod(z0, z1), x1, x2))) -> c3(ACTIVE(if(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_prod(z0, z1), x1, x2))) ENCARG(cons_active(cons_if(cons_p(z0), x1, x2))) -> c3(ACTIVE(if(p(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_p(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_add(z0, z1), x1, x2))) -> c3(ACTIVE(if(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_add(z0, z1), x1, x2))) ENCARG(cons_active(cons_zero(cons_active(z0)))) -> c3(ACTIVE(zero(active(encArg(z0)))), ENCARG(cons_zero(cons_active(z0)))) ENCARG(cons_active(cons_zero(cons_mark(z0)))) -> c3(ACTIVE(zero(mark(encArg(z0)))), ENCARG(cons_zero(cons_mark(z0)))) ENCARG(cons_active(cons_zero(cons_fact(z0)))) -> c3(ACTIVE(zero(fact(encArg(z0)))), ENCARG(cons_zero(cons_fact(z0)))) ENCARG(cons_active(cons_zero(cons_if(z0, z1, z2)))) -> c3(ACTIVE(zero(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_zero(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_zero(cons_zero(z0)))) -> c3(ACTIVE(zero(zero(encArg(z0)))), ENCARG(cons_zero(cons_zero(z0)))) ENCARG(cons_active(cons_zero(cons_s(z0)))) -> c3(ACTIVE(zero(s(encArg(z0)))), ENCARG(cons_zero(cons_s(z0)))) ENCARG(cons_active(cons_zero(cons_prod(z0, z1)))) -> c3(ACTIVE(zero(prod(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_prod(z0, z1)))) ENCARG(cons_active(cons_zero(cons_p(z0)))) -> c3(ACTIVE(zero(p(encArg(z0)))), ENCARG(cons_zero(cons_p(z0)))) ENCARG(cons_active(cons_zero(cons_add(z0, z1)))) -> c3(ACTIVE(zero(add(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_add(z0, z1)))) ENCARG(cons_active(cons_zero(0))) -> c3(ACTIVE(zero(0))) ENCARG(cons_active(cons_s(cons_active(z0)))) -> c3(ACTIVE(s(active(encArg(z0)))), ENCARG(cons_s(cons_active(z0)))) ENCARG(cons_active(cons_s(cons_mark(z0)))) -> c3(ACTIVE(s(mark(encArg(z0)))), ENCARG(cons_s(cons_mark(z0)))) ENCARG(cons_active(cons_s(cons_fact(z0)))) -> c3(ACTIVE(s(fact(encArg(z0)))), ENCARG(cons_s(cons_fact(z0)))) ENCARG(cons_active(cons_s(cons_if(z0, z1, z2)))) -> c3(ACTIVE(s(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_s(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_s(cons_zero(z0)))) -> c3(ACTIVE(s(zero(encArg(z0)))), ENCARG(cons_s(cons_zero(z0)))) ENCARG(cons_active(cons_s(cons_s(z0)))) -> c3(ACTIVE(s(s(encArg(z0)))), ENCARG(cons_s(cons_s(z0)))) ENCARG(cons_active(cons_s(cons_prod(z0, z1)))) -> c3(ACTIVE(s(prod(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_prod(z0, z1)))) ENCARG(cons_active(cons_s(cons_p(z0)))) -> c3(ACTIVE(s(p(encArg(z0)))), ENCARG(cons_s(cons_p(z0)))) ENCARG(cons_active(cons_s(cons_add(z0, z1)))) -> c3(ACTIVE(s(add(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_add(z0, z1)))) ENCARG(cons_active(cons_prod(x0, 0))) -> c3(ACTIVE(prod(encArg(x0), 0)), ENCARG(cons_prod(x0, 0))) ENCARG(cons_active(cons_prod(x0, true))) -> c3(ACTIVE(prod(encArg(x0), true)), ENCARG(cons_prod(x0, true))) ENCARG(cons_active(cons_prod(x0, false))) -> c3(ACTIVE(prod(encArg(x0), false)), ENCARG(cons_prod(x0, false))) ENCARG(cons_active(cons_prod(x0, cons_active(z0)))) -> c3(ACTIVE(prod(encArg(x0), active(encArg(z0)))), ENCARG(cons_prod(x0, cons_active(z0)))) ENCARG(cons_active(cons_prod(x0, cons_mark(z0)))) -> c3(ACTIVE(prod(encArg(x0), mark(encArg(z0)))), ENCARG(cons_prod(x0, cons_mark(z0)))) ENCARG(cons_active(cons_prod(x0, cons_fact(z0)))) -> c3(ACTIVE(prod(encArg(x0), fact(encArg(z0)))), ENCARG(cons_prod(x0, cons_fact(z0)))) ENCARG(cons_active(cons_prod(x0, cons_if(z0, z1, z2)))) -> c3(ACTIVE(prod(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_prod(x0, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_prod(x0, cons_zero(z0)))) -> c3(ACTIVE(prod(encArg(x0), zero(encArg(z0)))), ENCARG(cons_prod(x0, cons_zero(z0)))) ENCARG(cons_active(cons_prod(x0, cons_s(z0)))) -> c3(ACTIVE(prod(encArg(x0), s(encArg(z0)))), ENCARG(cons_prod(x0, cons_s(z0)))) ENCARG(cons_active(cons_prod(x0, cons_prod(z0, z1)))) -> c3(ACTIVE(prod(encArg(x0), prod(encArg(z0), encArg(z1)))), ENCARG(cons_prod(x0, cons_prod(z0, z1)))) ENCARG(cons_active(cons_prod(x0, cons_p(z0)))) -> c3(ACTIVE(prod(encArg(x0), p(encArg(z0)))), ENCARG(cons_prod(x0, cons_p(z0)))) ENCARG(cons_active(cons_prod(x0, cons_add(z0, z1)))) -> c3(ACTIVE(prod(encArg(x0), add(encArg(z0), encArg(z1)))), ENCARG(cons_prod(x0, cons_add(z0, z1)))) ENCARG(cons_active(cons_prod(0, x1))) -> c3(ACTIVE(prod(0, encArg(x1))), ENCARG(cons_prod(0, x1))) ENCARG(cons_active(cons_prod(true, x1))) -> c3(ACTIVE(prod(true, encArg(x1))), ENCARG(cons_prod(true, x1))) ENCARG(cons_active(cons_prod(false, x1))) -> c3(ACTIVE(prod(false, encArg(x1))), ENCARG(cons_prod(false, x1))) ENCARG(cons_active(cons_prod(cons_active(z0), x1))) -> c3(ACTIVE(prod(active(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_active(z0), x1))) ENCARG(cons_active(cons_prod(cons_mark(z0), x1))) -> c3(ACTIVE(prod(mark(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_mark(z0), x1))) ENCARG(cons_active(cons_prod(cons_fact(z0), x1))) -> c3(ACTIVE(prod(fact(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_fact(z0), x1))) ENCARG(cons_active(cons_prod(cons_if(z0, z1, z2), x1))) -> c3(ACTIVE(prod(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))), ENCARG(cons_prod(cons_if(z0, z1, z2), x1))) ENCARG(cons_active(cons_prod(cons_zero(z0), x1))) -> c3(ACTIVE(prod(zero(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_zero(z0), x1))) ENCARG(cons_active(cons_prod(cons_s(z0), x1))) -> c3(ACTIVE(prod(s(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_s(z0), x1))) ENCARG(cons_active(cons_prod(cons_prod(z0, z1), x1))) -> c3(ACTIVE(prod(prod(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_prod(cons_prod(z0, z1), x1))) ENCARG(cons_active(cons_prod(cons_p(z0), x1))) -> c3(ACTIVE(prod(p(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_p(z0), x1))) ENCARG(cons_active(cons_prod(cons_add(z0, z1), x1))) -> c3(ACTIVE(prod(add(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_prod(cons_add(z0, z1), x1))) ENCARG(cons_active(cons_p(cons_active(z0)))) -> c3(ACTIVE(p(active(encArg(z0)))), ENCARG(cons_p(cons_active(z0)))) ENCARG(cons_active(cons_p(cons_mark(z0)))) -> c3(ACTIVE(p(mark(encArg(z0)))), ENCARG(cons_p(cons_mark(z0)))) ENCARG(cons_active(cons_p(cons_fact(z0)))) -> c3(ACTIVE(p(fact(encArg(z0)))), ENCARG(cons_p(cons_fact(z0)))) ENCARG(cons_active(cons_p(cons_if(z0, z1, z2)))) -> c3(ACTIVE(p(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_p(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_p(cons_zero(z0)))) -> c3(ACTIVE(p(zero(encArg(z0)))), ENCARG(cons_p(cons_zero(z0)))) ENCARG(cons_active(cons_p(cons_s(z0)))) -> c3(ACTIVE(p(s(encArg(z0)))), ENCARG(cons_p(cons_s(z0)))) ENCARG(cons_active(cons_p(cons_prod(z0, z1)))) -> c3(ACTIVE(p(prod(encArg(z0), encArg(z1)))), ENCARG(cons_p(cons_prod(z0, z1)))) ENCARG(cons_active(cons_p(cons_p(z0)))) -> c3(ACTIVE(p(p(encArg(z0)))), ENCARG(cons_p(cons_p(z0)))) ENCARG(cons_active(cons_p(cons_add(z0, z1)))) -> c3(ACTIVE(p(add(encArg(z0), encArg(z1)))), ENCARG(cons_p(cons_add(z0, z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4, c_1, c1_1, c3_1 ---------------------------------------- (155) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCARG(cons_active(cons_add(z0, z1))) -> c3(ACTIVE(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) by ENCARG(cons_active(cons_add(x0, 0))) -> c3(ACTIVE(add(encArg(x0), 0)), ENCARG(cons_add(x0, 0))) ENCARG(cons_active(cons_add(x0, true))) -> c3(ACTIVE(add(encArg(x0), true)), ENCARG(cons_add(x0, true))) ENCARG(cons_active(cons_add(x0, false))) -> c3(ACTIVE(add(encArg(x0), false)), ENCARG(cons_add(x0, false))) ENCARG(cons_active(cons_add(x0, cons_active(z0)))) -> c3(ACTIVE(add(encArg(x0), active(encArg(z0)))), ENCARG(cons_add(x0, cons_active(z0)))) ENCARG(cons_active(cons_add(x0, cons_mark(z0)))) -> c3(ACTIVE(add(encArg(x0), mark(encArg(z0)))), ENCARG(cons_add(x0, cons_mark(z0)))) ENCARG(cons_active(cons_add(x0, cons_fact(z0)))) -> c3(ACTIVE(add(encArg(x0), fact(encArg(z0)))), ENCARG(cons_add(x0, cons_fact(z0)))) ENCARG(cons_active(cons_add(x0, cons_if(z0, z1, z2)))) -> c3(ACTIVE(add(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_add(x0, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_add(x0, cons_zero(z0)))) -> c3(ACTIVE(add(encArg(x0), zero(encArg(z0)))), ENCARG(cons_add(x0, cons_zero(z0)))) ENCARG(cons_active(cons_add(x0, cons_s(z0)))) -> c3(ACTIVE(add(encArg(x0), s(encArg(z0)))), ENCARG(cons_add(x0, cons_s(z0)))) ENCARG(cons_active(cons_add(x0, cons_prod(z0, z1)))) -> c3(ACTIVE(add(encArg(x0), prod(encArg(z0), encArg(z1)))), ENCARG(cons_add(x0, cons_prod(z0, z1)))) ENCARG(cons_active(cons_add(x0, cons_p(z0)))) -> c3(ACTIVE(add(encArg(x0), p(encArg(z0)))), ENCARG(cons_add(x0, cons_p(z0)))) ENCARG(cons_active(cons_add(x0, cons_add(z0, z1)))) -> c3(ACTIVE(add(encArg(x0), add(encArg(z0), encArg(z1)))), ENCARG(cons_add(x0, cons_add(z0, z1)))) ENCARG(cons_active(cons_add(0, x1))) -> c3(ACTIVE(add(0, encArg(x1))), ENCARG(cons_add(0, x1))) ENCARG(cons_active(cons_add(true, x1))) -> c3(ACTIVE(add(true, encArg(x1))), ENCARG(cons_add(true, x1))) ENCARG(cons_active(cons_add(false, x1))) -> c3(ACTIVE(add(false, encArg(x1))), ENCARG(cons_add(false, x1))) ENCARG(cons_active(cons_add(cons_active(z0), x1))) -> c3(ACTIVE(add(active(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_active(z0), x1))) ENCARG(cons_active(cons_add(cons_mark(z0), x1))) -> c3(ACTIVE(add(mark(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_mark(z0), x1))) ENCARG(cons_active(cons_add(cons_fact(z0), x1))) -> c3(ACTIVE(add(fact(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_fact(z0), x1))) ENCARG(cons_active(cons_add(cons_if(z0, z1, z2), x1))) -> c3(ACTIVE(add(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))), ENCARG(cons_add(cons_if(z0, z1, z2), x1))) ENCARG(cons_active(cons_add(cons_zero(z0), x1))) -> c3(ACTIVE(add(zero(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_zero(z0), x1))) ENCARG(cons_active(cons_add(cons_s(z0), x1))) -> c3(ACTIVE(add(s(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_s(z0), x1))) ENCARG(cons_active(cons_add(cons_prod(z0, z1), x1))) -> c3(ACTIVE(add(prod(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_add(cons_prod(z0, z1), x1))) ENCARG(cons_active(cons_add(cons_p(z0), x1))) -> c3(ACTIVE(add(p(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_p(z0), x1))) ENCARG(cons_active(cons_add(cons_add(z0, z1), x1))) -> c3(ACTIVE(add(add(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_add(cons_add(z0, z1), x1))) ---------------------------------------- (156) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, 0) -> c(PROD(encArg(x0), 0)) ENCODE_PROD(x0, true) -> c(PROD(encArg(x0), true)) ENCODE_PROD(x0, false) -> c(PROD(encArg(x0), false)) ENCODE_PROD(x0, cons_active(z0)) -> c(PROD(encArg(x0), active(encArg(z0)))) ENCODE_PROD(x0, cons_mark(z0)) -> c(PROD(encArg(x0), mark(encArg(z0)))) ENCODE_PROD(x0, cons_fact(z0)) -> c(PROD(encArg(x0), fact(encArg(z0)))) ENCODE_PROD(x0, cons_if(z0, z1, z2)) -> c(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_PROD(x0, cons_zero(z0)) -> c(PROD(encArg(x0), zero(encArg(z0)))) ENCODE_PROD(x0, cons_s(z0)) -> c(PROD(encArg(x0), s(encArg(z0)))) ENCODE_PROD(x0, cons_prod(z0, z1)) -> c(PROD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, cons_p(z0)) -> c(PROD(encArg(x0), p(encArg(z0)))) ENCODE_PROD(x0, cons_add(z0, z1)) -> c(PROD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_PROD(0, x1) -> c(PROD(0, encArg(x1))) ENCODE_PROD(true, x1) -> c(PROD(true, encArg(x1))) ENCODE_PROD(false, x1) -> c(PROD(false, encArg(x1))) ENCODE_PROD(cons_active(z0), x1) -> c(PROD(active(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_mark(z0), x1) -> c(PROD(mark(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_fact(z0), x1) -> c(PROD(fact(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_if(z0, z1, z2), x1) -> c(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_PROD(cons_zero(z0), x1) -> c(PROD(zero(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_s(z0), x1) -> c(PROD(s(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_prod(z0, z1), x1) -> c(PROD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_PROD(cons_p(z0), x1) -> c(PROD(p(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_add(z0, z1), x1) -> c(PROD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_P(cons_active(z0)) -> c(P(active(encArg(z0)))) ENCODE_P(cons_mark(z0)) -> c(P(mark(encArg(z0)))) ENCODE_P(cons_fact(z0)) -> c(P(fact(encArg(z0)))) ENCODE_P(cons_if(z0, z1, z2)) -> c(P(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_P(cons_zero(z0)) -> c(P(zero(encArg(z0)))) ENCODE_P(cons_s(z0)) -> c(P(s(encArg(z0)))) ENCODE_P(cons_prod(z0, z1)) -> c(P(prod(encArg(z0), encArg(z1)))) ENCODE_P(cons_p(z0)) -> c(P(p(encArg(z0)))) ENCODE_P(cons_add(z0, z1)) -> c(P(add(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, 0) -> c(ADD(encArg(x0), 0)) ENCODE_ADD(x0, true) -> c(ADD(encArg(x0), true)) ENCODE_ADD(x0, false) -> c(ADD(encArg(x0), false)) ENCODE_ADD(x0, cons_active(z0)) -> c(ADD(encArg(x0), active(encArg(z0)))) ENCODE_ADD(x0, cons_mark(z0)) -> c(ADD(encArg(x0), mark(encArg(z0)))) ENCODE_ADD(x0, cons_fact(z0)) -> c(ADD(encArg(x0), fact(encArg(z0)))) ENCODE_ADD(x0, cons_if(z0, z1, z2)) -> c(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ADD(x0, cons_zero(z0)) -> c(ADD(encArg(x0), zero(encArg(z0)))) ENCODE_ADD(x0, cons_s(z0)) -> c(ADD(encArg(x0), s(encArg(z0)))) ENCODE_ADD(x0, cons_prod(z0, z1)) -> c(ADD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, cons_p(z0)) -> c(ADD(encArg(x0), p(encArg(z0)))) ENCODE_ADD(x0, cons_add(z0, z1)) -> c(ADD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_ADD(0, x1) -> c(ADD(0, encArg(x1))) ENCODE_ADD(true, x1) -> c(ADD(true, encArg(x1))) ENCODE_ADD(false, x1) -> c(ADD(false, encArg(x1))) ENCODE_ADD(cons_active(z0), x1) -> c(ADD(active(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_mark(z0), x1) -> c(ADD(mark(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_fact(z0), x1) -> c(ADD(fact(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_if(z0, z1, z2), x1) -> c(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_ADD(cons_zero(z0), x1) -> c(ADD(zero(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_s(z0), x1) -> c(ADD(s(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_prod(z0, z1), x1) -> c(ADD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_ADD(cons_p(z0), x1) -> c(ADD(p(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_add(z0, z1), x1) -> c(ADD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCARG(cons_active(cons_active(cons_active(z0)))) -> c3(ACTIVE(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_active(cons_active(cons_mark(z0)))) -> c3(ACTIVE(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_active(cons_active(cons_fact(z0)))) -> c3(ACTIVE(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_active(cons_active(cons_if(z0, z1, z2)))) -> c3(ACTIVE(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_active(cons_zero(z0)))) -> c3(ACTIVE(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_active(cons_active(cons_s(z0)))) -> c3(ACTIVE(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_active(cons_active(cons_prod(z0, z1)))) -> c3(ACTIVE(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_active(cons_active(cons_p(z0)))) -> c3(ACTIVE(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_active(cons_active(cons_add(z0, z1)))) -> c3(ACTIVE(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(cons_active(z0)))) -> c3(ACTIVE(mark(active(encArg(z0)))), ENCARG(cons_mark(cons_active(z0)))) ENCARG(cons_active(cons_mark(cons_mark(z0)))) -> c3(ACTIVE(mark(mark(encArg(z0)))), ENCARG(cons_mark(cons_mark(z0)))) ENCARG(cons_active(cons_mark(cons_fact(z0)))) -> c3(ACTIVE(mark(fact(encArg(z0)))), ENCARG(cons_mark(cons_fact(z0)))) ENCARG(cons_active(cons_mark(cons_if(z0, z1, z2)))) -> c3(ACTIVE(mark(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_mark(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_mark(cons_zero(z0)))) -> c3(ACTIVE(mark(zero(encArg(z0)))), ENCARG(cons_mark(cons_zero(z0)))) ENCARG(cons_active(cons_mark(cons_s(z0)))) -> c3(ACTIVE(mark(s(encArg(z0)))), ENCARG(cons_mark(cons_s(z0)))) ENCARG(cons_active(cons_mark(cons_prod(z0, z1)))) -> c3(ACTIVE(mark(prod(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_prod(z0, z1)))) ENCARG(cons_active(cons_mark(cons_p(z0)))) -> c3(ACTIVE(mark(p(encArg(z0)))), ENCARG(cons_mark(cons_p(z0)))) ENCARG(cons_active(cons_mark(cons_add(z0, z1)))) -> c3(ACTIVE(mark(add(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(0))) -> c1(ACTIVE(mark(0))) ENCARG(cons_active(cons_mark(0))) -> c1(ENCARG(cons_mark(0))) ENCARG(cons_active(cons_mark(true))) -> c1(ACTIVE(mark(true))) ENCARG(cons_active(cons_mark(true))) -> c1(ENCARG(cons_mark(true))) ENCARG(cons_active(cons_mark(false))) -> c1(ACTIVE(mark(false))) ENCARG(cons_active(cons_mark(false))) -> c1(ENCARG(cons_mark(false))) ENCARG(cons_active(cons_if(x0, x1, 0))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), 0)), ENCARG(cons_if(x0, x1, 0))) ENCARG(cons_active(cons_if(x0, x1, true))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), true)), ENCARG(cons_if(x0, x1, true))) ENCARG(cons_active(cons_if(x0, x1, false))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), false)), ENCARG(cons_if(x0, x1, false))) ENCARG(cons_active(cons_if(x0, x1, cons_active(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), active(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_active(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_mark(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), mark(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_mark(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_fact(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), fact(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_fact(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_if(z0, z1, z2)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_if(x0, x1, cons_zero(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), zero(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_zero(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_s(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), s(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_s(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_prod(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_prod(z0, z1)))) ENCARG(cons_active(cons_if(x0, x1, cons_p(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), p(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_p(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_add(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_add(z0, z1)))) ENCARG(cons_active(cons_if(x0, 0, x2))) -> c3(ACTIVE(if(encArg(x0), 0, encArg(x2))), ENCARG(cons_if(x0, 0, x2))) ENCARG(cons_active(cons_if(x0, true, x2))) -> c3(ACTIVE(if(encArg(x0), true, encArg(x2))), ENCARG(cons_if(x0, true, x2))) ENCARG(cons_active(cons_if(x0, false, x2))) -> c3(ACTIVE(if(encArg(x0), false, encArg(x2))), ENCARG(cons_if(x0, false, x2))) ENCARG(cons_active(cons_if(x0, cons_active(z0), x2))) -> c3(ACTIVE(if(encArg(x0), active(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_active(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_mark(z0), x2))) -> c3(ACTIVE(if(encArg(x0), mark(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_mark(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_fact(z0), x2))) -> c3(ACTIVE(if(encArg(x0), fact(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_fact(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_if(z0, z1, z2), x2))) -> c3(ACTIVE(if(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))), ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2))) ENCARG(cons_active(cons_if(x0, cons_zero(z0), x2))) -> c3(ACTIVE(if(encArg(x0), zero(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_zero(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_s(z0), x2))) -> c3(ACTIVE(if(encArg(x0), s(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_s(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_prod(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_prod(z0, z1), x2))) ENCARG(cons_active(cons_if(x0, cons_p(z0), x2))) -> c3(ACTIVE(if(encArg(x0), p(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_p(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_add(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_add(z0, z1), x2))) ENCARG(cons_active(cons_if(0, x1, x2))) -> c3(ACTIVE(if(0, encArg(x1), encArg(x2))), ENCARG(cons_if(0, x1, x2))) ENCARG(cons_active(cons_if(true, x1, x2))) -> c3(ACTIVE(if(true, encArg(x1), encArg(x2))), ENCARG(cons_if(true, x1, x2))) ENCARG(cons_active(cons_if(false, x1, x2))) -> c3(ACTIVE(if(false, encArg(x1), encArg(x2))), ENCARG(cons_if(false, x1, x2))) ENCARG(cons_active(cons_if(cons_active(z0), x1, x2))) -> c3(ACTIVE(if(active(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_active(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_mark(z0), x1, x2))) -> c3(ACTIVE(if(mark(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_mark(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_fact(z0), x1, x2))) -> c3(ACTIVE(if(fact(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_fact(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_if(z0, z1, z2), x1, x2))) -> c3(ACTIVE(if(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2))) ENCARG(cons_active(cons_if(cons_zero(z0), x1, x2))) -> c3(ACTIVE(if(zero(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_zero(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_s(z0), x1, x2))) -> c3(ACTIVE(if(s(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_s(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_prod(z0, z1), x1, x2))) -> c3(ACTIVE(if(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_prod(z0, z1), x1, x2))) ENCARG(cons_active(cons_if(cons_p(z0), x1, x2))) -> c3(ACTIVE(if(p(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_p(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_add(z0, z1), x1, x2))) -> c3(ACTIVE(if(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_add(z0, z1), x1, x2))) ENCARG(cons_active(cons_zero(cons_active(z0)))) -> c3(ACTIVE(zero(active(encArg(z0)))), ENCARG(cons_zero(cons_active(z0)))) ENCARG(cons_active(cons_zero(cons_mark(z0)))) -> c3(ACTIVE(zero(mark(encArg(z0)))), ENCARG(cons_zero(cons_mark(z0)))) ENCARG(cons_active(cons_zero(cons_fact(z0)))) -> c3(ACTIVE(zero(fact(encArg(z0)))), ENCARG(cons_zero(cons_fact(z0)))) ENCARG(cons_active(cons_zero(cons_if(z0, z1, z2)))) -> c3(ACTIVE(zero(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_zero(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_zero(cons_zero(z0)))) -> c3(ACTIVE(zero(zero(encArg(z0)))), ENCARG(cons_zero(cons_zero(z0)))) ENCARG(cons_active(cons_zero(cons_s(z0)))) -> c3(ACTIVE(zero(s(encArg(z0)))), ENCARG(cons_zero(cons_s(z0)))) ENCARG(cons_active(cons_zero(cons_prod(z0, z1)))) -> c3(ACTIVE(zero(prod(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_prod(z0, z1)))) ENCARG(cons_active(cons_zero(cons_p(z0)))) -> c3(ACTIVE(zero(p(encArg(z0)))), ENCARG(cons_zero(cons_p(z0)))) ENCARG(cons_active(cons_zero(cons_add(z0, z1)))) -> c3(ACTIVE(zero(add(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_add(z0, z1)))) ENCARG(cons_active(cons_zero(0))) -> c3(ACTIVE(zero(0))) ENCARG(cons_active(cons_s(cons_active(z0)))) -> c3(ACTIVE(s(active(encArg(z0)))), ENCARG(cons_s(cons_active(z0)))) ENCARG(cons_active(cons_s(cons_mark(z0)))) -> c3(ACTIVE(s(mark(encArg(z0)))), ENCARG(cons_s(cons_mark(z0)))) ENCARG(cons_active(cons_s(cons_fact(z0)))) -> c3(ACTIVE(s(fact(encArg(z0)))), ENCARG(cons_s(cons_fact(z0)))) ENCARG(cons_active(cons_s(cons_if(z0, z1, z2)))) -> c3(ACTIVE(s(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_s(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_s(cons_zero(z0)))) -> c3(ACTIVE(s(zero(encArg(z0)))), ENCARG(cons_s(cons_zero(z0)))) ENCARG(cons_active(cons_s(cons_s(z0)))) -> c3(ACTIVE(s(s(encArg(z0)))), ENCARG(cons_s(cons_s(z0)))) ENCARG(cons_active(cons_s(cons_prod(z0, z1)))) -> c3(ACTIVE(s(prod(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_prod(z0, z1)))) ENCARG(cons_active(cons_s(cons_p(z0)))) -> c3(ACTIVE(s(p(encArg(z0)))), ENCARG(cons_s(cons_p(z0)))) ENCARG(cons_active(cons_s(cons_add(z0, z1)))) -> c3(ACTIVE(s(add(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_add(z0, z1)))) ENCARG(cons_active(cons_prod(x0, 0))) -> c3(ACTIVE(prod(encArg(x0), 0)), ENCARG(cons_prod(x0, 0))) ENCARG(cons_active(cons_prod(x0, true))) -> c3(ACTIVE(prod(encArg(x0), true)), ENCARG(cons_prod(x0, true))) ENCARG(cons_active(cons_prod(x0, false))) -> c3(ACTIVE(prod(encArg(x0), false)), ENCARG(cons_prod(x0, false))) ENCARG(cons_active(cons_prod(x0, cons_active(z0)))) -> c3(ACTIVE(prod(encArg(x0), active(encArg(z0)))), ENCARG(cons_prod(x0, cons_active(z0)))) ENCARG(cons_active(cons_prod(x0, cons_mark(z0)))) -> c3(ACTIVE(prod(encArg(x0), mark(encArg(z0)))), ENCARG(cons_prod(x0, cons_mark(z0)))) ENCARG(cons_active(cons_prod(x0, cons_fact(z0)))) -> c3(ACTIVE(prod(encArg(x0), fact(encArg(z0)))), ENCARG(cons_prod(x0, cons_fact(z0)))) ENCARG(cons_active(cons_prod(x0, cons_if(z0, z1, z2)))) -> c3(ACTIVE(prod(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_prod(x0, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_prod(x0, cons_zero(z0)))) -> c3(ACTIVE(prod(encArg(x0), zero(encArg(z0)))), ENCARG(cons_prod(x0, cons_zero(z0)))) ENCARG(cons_active(cons_prod(x0, cons_s(z0)))) -> c3(ACTIVE(prod(encArg(x0), s(encArg(z0)))), ENCARG(cons_prod(x0, cons_s(z0)))) ENCARG(cons_active(cons_prod(x0, cons_prod(z0, z1)))) -> c3(ACTIVE(prod(encArg(x0), prod(encArg(z0), encArg(z1)))), ENCARG(cons_prod(x0, cons_prod(z0, z1)))) ENCARG(cons_active(cons_prod(x0, cons_p(z0)))) -> c3(ACTIVE(prod(encArg(x0), p(encArg(z0)))), ENCARG(cons_prod(x0, cons_p(z0)))) ENCARG(cons_active(cons_prod(x0, cons_add(z0, z1)))) -> c3(ACTIVE(prod(encArg(x0), add(encArg(z0), encArg(z1)))), ENCARG(cons_prod(x0, cons_add(z0, z1)))) ENCARG(cons_active(cons_prod(0, x1))) -> c3(ACTIVE(prod(0, encArg(x1))), ENCARG(cons_prod(0, x1))) ENCARG(cons_active(cons_prod(true, x1))) -> c3(ACTIVE(prod(true, encArg(x1))), ENCARG(cons_prod(true, x1))) ENCARG(cons_active(cons_prod(false, x1))) -> c3(ACTIVE(prod(false, encArg(x1))), ENCARG(cons_prod(false, x1))) ENCARG(cons_active(cons_prod(cons_active(z0), x1))) -> c3(ACTIVE(prod(active(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_active(z0), x1))) ENCARG(cons_active(cons_prod(cons_mark(z0), x1))) -> c3(ACTIVE(prod(mark(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_mark(z0), x1))) ENCARG(cons_active(cons_prod(cons_fact(z0), x1))) -> c3(ACTIVE(prod(fact(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_fact(z0), x1))) ENCARG(cons_active(cons_prod(cons_if(z0, z1, z2), x1))) -> c3(ACTIVE(prod(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))), ENCARG(cons_prod(cons_if(z0, z1, z2), x1))) ENCARG(cons_active(cons_prod(cons_zero(z0), x1))) -> c3(ACTIVE(prod(zero(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_zero(z0), x1))) ENCARG(cons_active(cons_prod(cons_s(z0), x1))) -> c3(ACTIVE(prod(s(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_s(z0), x1))) ENCARG(cons_active(cons_prod(cons_prod(z0, z1), x1))) -> c3(ACTIVE(prod(prod(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_prod(cons_prod(z0, z1), x1))) ENCARG(cons_active(cons_prod(cons_p(z0), x1))) -> c3(ACTIVE(prod(p(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_p(z0), x1))) ENCARG(cons_active(cons_prod(cons_add(z0, z1), x1))) -> c3(ACTIVE(prod(add(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_prod(cons_add(z0, z1), x1))) ENCARG(cons_active(cons_p(cons_active(z0)))) -> c3(ACTIVE(p(active(encArg(z0)))), ENCARG(cons_p(cons_active(z0)))) ENCARG(cons_active(cons_p(cons_mark(z0)))) -> c3(ACTIVE(p(mark(encArg(z0)))), ENCARG(cons_p(cons_mark(z0)))) ENCARG(cons_active(cons_p(cons_fact(z0)))) -> c3(ACTIVE(p(fact(encArg(z0)))), ENCARG(cons_p(cons_fact(z0)))) ENCARG(cons_active(cons_p(cons_if(z0, z1, z2)))) -> c3(ACTIVE(p(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_p(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_p(cons_zero(z0)))) -> c3(ACTIVE(p(zero(encArg(z0)))), ENCARG(cons_p(cons_zero(z0)))) ENCARG(cons_active(cons_p(cons_s(z0)))) -> c3(ACTIVE(p(s(encArg(z0)))), ENCARG(cons_p(cons_s(z0)))) ENCARG(cons_active(cons_p(cons_prod(z0, z1)))) -> c3(ACTIVE(p(prod(encArg(z0), encArg(z1)))), ENCARG(cons_p(cons_prod(z0, z1)))) ENCARG(cons_active(cons_p(cons_p(z0)))) -> c3(ACTIVE(p(p(encArg(z0)))), ENCARG(cons_p(cons_p(z0)))) ENCARG(cons_active(cons_p(cons_add(z0, z1)))) -> c3(ACTIVE(p(add(encArg(z0), encArg(z1)))), ENCARG(cons_p(cons_add(z0, z1)))) ENCARG(cons_active(cons_add(x0, 0))) -> c3(ACTIVE(add(encArg(x0), 0)), ENCARG(cons_add(x0, 0))) ENCARG(cons_active(cons_add(x0, true))) -> c3(ACTIVE(add(encArg(x0), true)), ENCARG(cons_add(x0, true))) ENCARG(cons_active(cons_add(x0, false))) -> c3(ACTIVE(add(encArg(x0), false)), ENCARG(cons_add(x0, false))) ENCARG(cons_active(cons_add(x0, cons_active(z0)))) -> c3(ACTIVE(add(encArg(x0), active(encArg(z0)))), ENCARG(cons_add(x0, cons_active(z0)))) ENCARG(cons_active(cons_add(x0, cons_mark(z0)))) -> c3(ACTIVE(add(encArg(x0), mark(encArg(z0)))), ENCARG(cons_add(x0, cons_mark(z0)))) ENCARG(cons_active(cons_add(x0, cons_fact(z0)))) -> c3(ACTIVE(add(encArg(x0), fact(encArg(z0)))), ENCARG(cons_add(x0, cons_fact(z0)))) ENCARG(cons_active(cons_add(x0, cons_if(z0, z1, z2)))) -> c3(ACTIVE(add(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_add(x0, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_add(x0, cons_zero(z0)))) -> c3(ACTIVE(add(encArg(x0), zero(encArg(z0)))), ENCARG(cons_add(x0, cons_zero(z0)))) ENCARG(cons_active(cons_add(x0, cons_s(z0)))) -> c3(ACTIVE(add(encArg(x0), s(encArg(z0)))), ENCARG(cons_add(x0, cons_s(z0)))) ENCARG(cons_active(cons_add(x0, cons_prod(z0, z1)))) -> c3(ACTIVE(add(encArg(x0), prod(encArg(z0), encArg(z1)))), ENCARG(cons_add(x0, cons_prod(z0, z1)))) ENCARG(cons_active(cons_add(x0, cons_p(z0)))) -> c3(ACTIVE(add(encArg(x0), p(encArg(z0)))), ENCARG(cons_add(x0, cons_p(z0)))) ENCARG(cons_active(cons_add(x0, cons_add(z0, z1)))) -> c3(ACTIVE(add(encArg(x0), add(encArg(z0), encArg(z1)))), ENCARG(cons_add(x0, cons_add(z0, z1)))) ENCARG(cons_active(cons_add(0, x1))) -> c3(ACTIVE(add(0, encArg(x1))), ENCARG(cons_add(0, x1))) ENCARG(cons_active(cons_add(true, x1))) -> c3(ACTIVE(add(true, encArg(x1))), ENCARG(cons_add(true, x1))) ENCARG(cons_active(cons_add(false, x1))) -> c3(ACTIVE(add(false, encArg(x1))), ENCARG(cons_add(false, x1))) ENCARG(cons_active(cons_add(cons_active(z0), x1))) -> c3(ACTIVE(add(active(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_active(z0), x1))) ENCARG(cons_active(cons_add(cons_mark(z0), x1))) -> c3(ACTIVE(add(mark(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_mark(z0), x1))) ENCARG(cons_active(cons_add(cons_fact(z0), x1))) -> c3(ACTIVE(add(fact(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_fact(z0), x1))) ENCARG(cons_active(cons_add(cons_if(z0, z1, z2), x1))) -> c3(ACTIVE(add(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))), ENCARG(cons_add(cons_if(z0, z1, z2), x1))) ENCARG(cons_active(cons_add(cons_zero(z0), x1))) -> c3(ACTIVE(add(zero(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_zero(z0), x1))) ENCARG(cons_active(cons_add(cons_s(z0), x1))) -> c3(ACTIVE(add(s(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_s(z0), x1))) ENCARG(cons_active(cons_add(cons_prod(z0, z1), x1))) -> c3(ACTIVE(add(prod(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_add(cons_prod(z0, z1), x1))) ENCARG(cons_active(cons_add(cons_p(z0), x1))) -> c3(ACTIVE(add(p(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_p(z0), x1))) ENCARG(cons_active(cons_add(cons_add(z0, z1), x1))) -> c3(ACTIVE(add(add(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_add(cons_add(z0, z1), x1))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4, c_1, c1_1, c3_1 ---------------------------------------- (157) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCARG(cons_mark(cons_active(z0))) -> c4(MARK(active(encArg(z0))), ENCARG(cons_active(z0))) by ENCARG(cons_mark(cons_active(0))) -> c4(MARK(active(0)), ENCARG(cons_active(0))) ENCARG(cons_mark(cons_active(true))) -> c4(MARK(active(true)), ENCARG(cons_active(true))) ENCARG(cons_mark(cons_active(false))) -> c4(MARK(active(false)), ENCARG(cons_active(false))) ENCARG(cons_mark(cons_active(cons_active(z0)))) -> c4(MARK(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_mark(cons_active(cons_mark(z0)))) -> c4(MARK(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_mark(cons_active(cons_fact(z0)))) -> c4(MARK(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_mark(cons_active(cons_if(z0, z1, z2)))) -> c4(MARK(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_mark(cons_active(cons_zero(z0)))) -> c4(MARK(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_mark(cons_active(cons_s(z0)))) -> c4(MARK(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_mark(cons_active(cons_prod(z0, z1)))) -> c4(MARK(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_mark(cons_active(cons_p(z0)))) -> c4(MARK(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_mark(cons_active(cons_add(z0, z1)))) -> c4(MARK(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) ---------------------------------------- (158) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, 0) -> c(PROD(encArg(x0), 0)) ENCODE_PROD(x0, true) -> c(PROD(encArg(x0), true)) ENCODE_PROD(x0, false) -> c(PROD(encArg(x0), false)) ENCODE_PROD(x0, cons_active(z0)) -> c(PROD(encArg(x0), active(encArg(z0)))) ENCODE_PROD(x0, cons_mark(z0)) -> c(PROD(encArg(x0), mark(encArg(z0)))) ENCODE_PROD(x0, cons_fact(z0)) -> c(PROD(encArg(x0), fact(encArg(z0)))) ENCODE_PROD(x0, cons_if(z0, z1, z2)) -> c(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_PROD(x0, cons_zero(z0)) -> c(PROD(encArg(x0), zero(encArg(z0)))) ENCODE_PROD(x0, cons_s(z0)) -> c(PROD(encArg(x0), s(encArg(z0)))) ENCODE_PROD(x0, cons_prod(z0, z1)) -> c(PROD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, cons_p(z0)) -> c(PROD(encArg(x0), p(encArg(z0)))) ENCODE_PROD(x0, cons_add(z0, z1)) -> c(PROD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_PROD(0, x1) -> c(PROD(0, encArg(x1))) ENCODE_PROD(true, x1) -> c(PROD(true, encArg(x1))) ENCODE_PROD(false, x1) -> c(PROD(false, encArg(x1))) ENCODE_PROD(cons_active(z0), x1) -> c(PROD(active(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_mark(z0), x1) -> c(PROD(mark(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_fact(z0), x1) -> c(PROD(fact(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_if(z0, z1, z2), x1) -> c(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_PROD(cons_zero(z0), x1) -> c(PROD(zero(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_s(z0), x1) -> c(PROD(s(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_prod(z0, z1), x1) -> c(PROD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_PROD(cons_p(z0), x1) -> c(PROD(p(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_add(z0, z1), x1) -> c(PROD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_P(cons_active(z0)) -> c(P(active(encArg(z0)))) ENCODE_P(cons_mark(z0)) -> c(P(mark(encArg(z0)))) ENCODE_P(cons_fact(z0)) -> c(P(fact(encArg(z0)))) ENCODE_P(cons_if(z0, z1, z2)) -> c(P(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_P(cons_zero(z0)) -> c(P(zero(encArg(z0)))) ENCODE_P(cons_s(z0)) -> c(P(s(encArg(z0)))) ENCODE_P(cons_prod(z0, z1)) -> c(P(prod(encArg(z0), encArg(z1)))) ENCODE_P(cons_p(z0)) -> c(P(p(encArg(z0)))) ENCODE_P(cons_add(z0, z1)) -> c(P(add(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, 0) -> c(ADD(encArg(x0), 0)) ENCODE_ADD(x0, true) -> c(ADD(encArg(x0), true)) ENCODE_ADD(x0, false) -> c(ADD(encArg(x0), false)) ENCODE_ADD(x0, cons_active(z0)) -> c(ADD(encArg(x0), active(encArg(z0)))) ENCODE_ADD(x0, cons_mark(z0)) -> c(ADD(encArg(x0), mark(encArg(z0)))) ENCODE_ADD(x0, cons_fact(z0)) -> c(ADD(encArg(x0), fact(encArg(z0)))) ENCODE_ADD(x0, cons_if(z0, z1, z2)) -> c(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ADD(x0, cons_zero(z0)) -> c(ADD(encArg(x0), zero(encArg(z0)))) ENCODE_ADD(x0, cons_s(z0)) -> c(ADD(encArg(x0), s(encArg(z0)))) ENCODE_ADD(x0, cons_prod(z0, z1)) -> c(ADD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, cons_p(z0)) -> c(ADD(encArg(x0), p(encArg(z0)))) ENCODE_ADD(x0, cons_add(z0, z1)) -> c(ADD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_ADD(0, x1) -> c(ADD(0, encArg(x1))) ENCODE_ADD(true, x1) -> c(ADD(true, encArg(x1))) ENCODE_ADD(false, x1) -> c(ADD(false, encArg(x1))) ENCODE_ADD(cons_active(z0), x1) -> c(ADD(active(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_mark(z0), x1) -> c(ADD(mark(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_fact(z0), x1) -> c(ADD(fact(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_if(z0, z1, z2), x1) -> c(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_ADD(cons_zero(z0), x1) -> c(ADD(zero(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_s(z0), x1) -> c(ADD(s(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_prod(z0, z1), x1) -> c(ADD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_ADD(cons_p(z0), x1) -> c(ADD(p(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_add(z0, z1), x1) -> c(ADD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCARG(cons_active(cons_active(cons_active(z0)))) -> c3(ACTIVE(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_active(cons_active(cons_mark(z0)))) -> c3(ACTIVE(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_active(cons_active(cons_fact(z0)))) -> c3(ACTIVE(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_active(cons_active(cons_if(z0, z1, z2)))) -> c3(ACTIVE(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_active(cons_zero(z0)))) -> c3(ACTIVE(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_active(cons_active(cons_s(z0)))) -> c3(ACTIVE(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_active(cons_active(cons_prod(z0, z1)))) -> c3(ACTIVE(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_active(cons_active(cons_p(z0)))) -> c3(ACTIVE(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_active(cons_active(cons_add(z0, z1)))) -> c3(ACTIVE(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(cons_active(z0)))) -> c3(ACTIVE(mark(active(encArg(z0)))), ENCARG(cons_mark(cons_active(z0)))) ENCARG(cons_active(cons_mark(cons_mark(z0)))) -> c3(ACTIVE(mark(mark(encArg(z0)))), ENCARG(cons_mark(cons_mark(z0)))) ENCARG(cons_active(cons_mark(cons_fact(z0)))) -> c3(ACTIVE(mark(fact(encArg(z0)))), ENCARG(cons_mark(cons_fact(z0)))) ENCARG(cons_active(cons_mark(cons_if(z0, z1, z2)))) -> c3(ACTIVE(mark(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_mark(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_mark(cons_zero(z0)))) -> c3(ACTIVE(mark(zero(encArg(z0)))), ENCARG(cons_mark(cons_zero(z0)))) ENCARG(cons_active(cons_mark(cons_s(z0)))) -> c3(ACTIVE(mark(s(encArg(z0)))), ENCARG(cons_mark(cons_s(z0)))) ENCARG(cons_active(cons_mark(cons_prod(z0, z1)))) -> c3(ACTIVE(mark(prod(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_prod(z0, z1)))) ENCARG(cons_active(cons_mark(cons_p(z0)))) -> c3(ACTIVE(mark(p(encArg(z0)))), ENCARG(cons_mark(cons_p(z0)))) ENCARG(cons_active(cons_mark(cons_add(z0, z1)))) -> c3(ACTIVE(mark(add(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(0))) -> c1(ACTIVE(mark(0))) ENCARG(cons_active(cons_mark(0))) -> c1(ENCARG(cons_mark(0))) ENCARG(cons_active(cons_mark(true))) -> c1(ACTIVE(mark(true))) ENCARG(cons_active(cons_mark(true))) -> c1(ENCARG(cons_mark(true))) ENCARG(cons_active(cons_mark(false))) -> c1(ACTIVE(mark(false))) ENCARG(cons_active(cons_mark(false))) -> c1(ENCARG(cons_mark(false))) ENCARG(cons_active(cons_if(x0, x1, 0))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), 0)), ENCARG(cons_if(x0, x1, 0))) ENCARG(cons_active(cons_if(x0, x1, true))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), true)), ENCARG(cons_if(x0, x1, true))) ENCARG(cons_active(cons_if(x0, x1, false))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), false)), ENCARG(cons_if(x0, x1, false))) ENCARG(cons_active(cons_if(x0, x1, cons_active(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), active(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_active(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_mark(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), mark(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_mark(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_fact(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), fact(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_fact(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_if(z0, z1, z2)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_if(x0, x1, cons_zero(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), zero(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_zero(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_s(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), s(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_s(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_prod(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_prod(z0, z1)))) ENCARG(cons_active(cons_if(x0, x1, cons_p(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), p(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_p(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_add(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_add(z0, z1)))) ENCARG(cons_active(cons_if(x0, 0, x2))) -> c3(ACTIVE(if(encArg(x0), 0, encArg(x2))), ENCARG(cons_if(x0, 0, x2))) ENCARG(cons_active(cons_if(x0, true, x2))) -> c3(ACTIVE(if(encArg(x0), true, encArg(x2))), ENCARG(cons_if(x0, true, x2))) ENCARG(cons_active(cons_if(x0, false, x2))) -> c3(ACTIVE(if(encArg(x0), false, encArg(x2))), ENCARG(cons_if(x0, false, x2))) ENCARG(cons_active(cons_if(x0, cons_active(z0), x2))) -> c3(ACTIVE(if(encArg(x0), active(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_active(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_mark(z0), x2))) -> c3(ACTIVE(if(encArg(x0), mark(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_mark(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_fact(z0), x2))) -> c3(ACTIVE(if(encArg(x0), fact(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_fact(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_if(z0, z1, z2), x2))) -> c3(ACTIVE(if(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))), ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2))) ENCARG(cons_active(cons_if(x0, cons_zero(z0), x2))) -> c3(ACTIVE(if(encArg(x0), zero(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_zero(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_s(z0), x2))) -> c3(ACTIVE(if(encArg(x0), s(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_s(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_prod(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_prod(z0, z1), x2))) ENCARG(cons_active(cons_if(x0, cons_p(z0), x2))) -> c3(ACTIVE(if(encArg(x0), p(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_p(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_add(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_add(z0, z1), x2))) ENCARG(cons_active(cons_if(0, x1, x2))) -> c3(ACTIVE(if(0, encArg(x1), encArg(x2))), ENCARG(cons_if(0, x1, x2))) ENCARG(cons_active(cons_if(true, x1, x2))) -> c3(ACTIVE(if(true, encArg(x1), encArg(x2))), ENCARG(cons_if(true, x1, x2))) ENCARG(cons_active(cons_if(false, x1, x2))) -> c3(ACTIVE(if(false, encArg(x1), encArg(x2))), ENCARG(cons_if(false, x1, x2))) ENCARG(cons_active(cons_if(cons_active(z0), x1, x2))) -> c3(ACTIVE(if(active(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_active(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_mark(z0), x1, x2))) -> c3(ACTIVE(if(mark(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_mark(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_fact(z0), x1, x2))) -> c3(ACTIVE(if(fact(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_fact(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_if(z0, z1, z2), x1, x2))) -> c3(ACTIVE(if(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2))) ENCARG(cons_active(cons_if(cons_zero(z0), x1, x2))) -> c3(ACTIVE(if(zero(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_zero(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_s(z0), x1, x2))) -> c3(ACTIVE(if(s(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_s(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_prod(z0, z1), x1, x2))) -> c3(ACTIVE(if(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_prod(z0, z1), x1, x2))) ENCARG(cons_active(cons_if(cons_p(z0), x1, x2))) -> c3(ACTIVE(if(p(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_p(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_add(z0, z1), x1, x2))) -> c3(ACTIVE(if(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_add(z0, z1), x1, x2))) ENCARG(cons_active(cons_zero(cons_active(z0)))) -> c3(ACTIVE(zero(active(encArg(z0)))), ENCARG(cons_zero(cons_active(z0)))) ENCARG(cons_active(cons_zero(cons_mark(z0)))) -> c3(ACTIVE(zero(mark(encArg(z0)))), ENCARG(cons_zero(cons_mark(z0)))) ENCARG(cons_active(cons_zero(cons_fact(z0)))) -> c3(ACTIVE(zero(fact(encArg(z0)))), ENCARG(cons_zero(cons_fact(z0)))) ENCARG(cons_active(cons_zero(cons_if(z0, z1, z2)))) -> c3(ACTIVE(zero(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_zero(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_zero(cons_zero(z0)))) -> c3(ACTIVE(zero(zero(encArg(z0)))), ENCARG(cons_zero(cons_zero(z0)))) ENCARG(cons_active(cons_zero(cons_s(z0)))) -> c3(ACTIVE(zero(s(encArg(z0)))), ENCARG(cons_zero(cons_s(z0)))) ENCARG(cons_active(cons_zero(cons_prod(z0, z1)))) -> c3(ACTIVE(zero(prod(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_prod(z0, z1)))) ENCARG(cons_active(cons_zero(cons_p(z0)))) -> c3(ACTIVE(zero(p(encArg(z0)))), ENCARG(cons_zero(cons_p(z0)))) ENCARG(cons_active(cons_zero(cons_add(z0, z1)))) -> c3(ACTIVE(zero(add(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_add(z0, z1)))) ENCARG(cons_active(cons_zero(0))) -> c3(ACTIVE(zero(0))) ENCARG(cons_active(cons_s(cons_active(z0)))) -> c3(ACTIVE(s(active(encArg(z0)))), ENCARG(cons_s(cons_active(z0)))) ENCARG(cons_active(cons_s(cons_mark(z0)))) -> c3(ACTIVE(s(mark(encArg(z0)))), ENCARG(cons_s(cons_mark(z0)))) ENCARG(cons_active(cons_s(cons_fact(z0)))) -> c3(ACTIVE(s(fact(encArg(z0)))), ENCARG(cons_s(cons_fact(z0)))) ENCARG(cons_active(cons_s(cons_if(z0, z1, z2)))) -> c3(ACTIVE(s(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_s(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_s(cons_zero(z0)))) -> c3(ACTIVE(s(zero(encArg(z0)))), ENCARG(cons_s(cons_zero(z0)))) ENCARG(cons_active(cons_s(cons_s(z0)))) -> c3(ACTIVE(s(s(encArg(z0)))), ENCARG(cons_s(cons_s(z0)))) ENCARG(cons_active(cons_s(cons_prod(z0, z1)))) -> c3(ACTIVE(s(prod(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_prod(z0, z1)))) ENCARG(cons_active(cons_s(cons_p(z0)))) -> c3(ACTIVE(s(p(encArg(z0)))), ENCARG(cons_s(cons_p(z0)))) ENCARG(cons_active(cons_s(cons_add(z0, z1)))) -> c3(ACTIVE(s(add(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_add(z0, z1)))) ENCARG(cons_active(cons_prod(x0, 0))) -> c3(ACTIVE(prod(encArg(x0), 0)), ENCARG(cons_prod(x0, 0))) ENCARG(cons_active(cons_prod(x0, true))) -> c3(ACTIVE(prod(encArg(x0), true)), ENCARG(cons_prod(x0, true))) ENCARG(cons_active(cons_prod(x0, false))) -> c3(ACTIVE(prod(encArg(x0), false)), ENCARG(cons_prod(x0, false))) ENCARG(cons_active(cons_prod(x0, cons_active(z0)))) -> c3(ACTIVE(prod(encArg(x0), active(encArg(z0)))), ENCARG(cons_prod(x0, cons_active(z0)))) ENCARG(cons_active(cons_prod(x0, cons_mark(z0)))) -> c3(ACTIVE(prod(encArg(x0), mark(encArg(z0)))), ENCARG(cons_prod(x0, cons_mark(z0)))) ENCARG(cons_active(cons_prod(x0, cons_fact(z0)))) -> c3(ACTIVE(prod(encArg(x0), fact(encArg(z0)))), ENCARG(cons_prod(x0, cons_fact(z0)))) ENCARG(cons_active(cons_prod(x0, cons_if(z0, z1, z2)))) -> c3(ACTIVE(prod(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_prod(x0, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_prod(x0, cons_zero(z0)))) -> c3(ACTIVE(prod(encArg(x0), zero(encArg(z0)))), ENCARG(cons_prod(x0, cons_zero(z0)))) ENCARG(cons_active(cons_prod(x0, cons_s(z0)))) -> c3(ACTIVE(prod(encArg(x0), s(encArg(z0)))), ENCARG(cons_prod(x0, cons_s(z0)))) ENCARG(cons_active(cons_prod(x0, cons_prod(z0, z1)))) -> c3(ACTIVE(prod(encArg(x0), prod(encArg(z0), encArg(z1)))), ENCARG(cons_prod(x0, cons_prod(z0, z1)))) ENCARG(cons_active(cons_prod(x0, cons_p(z0)))) -> c3(ACTIVE(prod(encArg(x0), p(encArg(z0)))), ENCARG(cons_prod(x0, cons_p(z0)))) ENCARG(cons_active(cons_prod(x0, cons_add(z0, z1)))) -> c3(ACTIVE(prod(encArg(x0), add(encArg(z0), encArg(z1)))), ENCARG(cons_prod(x0, cons_add(z0, z1)))) ENCARG(cons_active(cons_prod(0, x1))) -> c3(ACTIVE(prod(0, encArg(x1))), ENCARG(cons_prod(0, x1))) ENCARG(cons_active(cons_prod(true, x1))) -> c3(ACTIVE(prod(true, encArg(x1))), ENCARG(cons_prod(true, x1))) ENCARG(cons_active(cons_prod(false, x1))) -> c3(ACTIVE(prod(false, encArg(x1))), ENCARG(cons_prod(false, x1))) ENCARG(cons_active(cons_prod(cons_active(z0), x1))) -> c3(ACTIVE(prod(active(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_active(z0), x1))) ENCARG(cons_active(cons_prod(cons_mark(z0), x1))) -> c3(ACTIVE(prod(mark(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_mark(z0), x1))) ENCARG(cons_active(cons_prod(cons_fact(z0), x1))) -> c3(ACTIVE(prod(fact(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_fact(z0), x1))) ENCARG(cons_active(cons_prod(cons_if(z0, z1, z2), x1))) -> c3(ACTIVE(prod(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))), ENCARG(cons_prod(cons_if(z0, z1, z2), x1))) ENCARG(cons_active(cons_prod(cons_zero(z0), x1))) -> c3(ACTIVE(prod(zero(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_zero(z0), x1))) ENCARG(cons_active(cons_prod(cons_s(z0), x1))) -> c3(ACTIVE(prod(s(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_s(z0), x1))) ENCARG(cons_active(cons_prod(cons_prod(z0, z1), x1))) -> c3(ACTIVE(prod(prod(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_prod(cons_prod(z0, z1), x1))) ENCARG(cons_active(cons_prod(cons_p(z0), x1))) -> c3(ACTIVE(prod(p(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_p(z0), x1))) ENCARG(cons_active(cons_prod(cons_add(z0, z1), x1))) -> c3(ACTIVE(prod(add(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_prod(cons_add(z0, z1), x1))) ENCARG(cons_active(cons_p(cons_active(z0)))) -> c3(ACTIVE(p(active(encArg(z0)))), ENCARG(cons_p(cons_active(z0)))) ENCARG(cons_active(cons_p(cons_mark(z0)))) -> c3(ACTIVE(p(mark(encArg(z0)))), ENCARG(cons_p(cons_mark(z0)))) ENCARG(cons_active(cons_p(cons_fact(z0)))) -> c3(ACTIVE(p(fact(encArg(z0)))), ENCARG(cons_p(cons_fact(z0)))) ENCARG(cons_active(cons_p(cons_if(z0, z1, z2)))) -> c3(ACTIVE(p(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_p(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_p(cons_zero(z0)))) -> c3(ACTIVE(p(zero(encArg(z0)))), ENCARG(cons_p(cons_zero(z0)))) ENCARG(cons_active(cons_p(cons_s(z0)))) -> c3(ACTIVE(p(s(encArg(z0)))), ENCARG(cons_p(cons_s(z0)))) ENCARG(cons_active(cons_p(cons_prod(z0, z1)))) -> c3(ACTIVE(p(prod(encArg(z0), encArg(z1)))), ENCARG(cons_p(cons_prod(z0, z1)))) ENCARG(cons_active(cons_p(cons_p(z0)))) -> c3(ACTIVE(p(p(encArg(z0)))), ENCARG(cons_p(cons_p(z0)))) ENCARG(cons_active(cons_p(cons_add(z0, z1)))) -> c3(ACTIVE(p(add(encArg(z0), encArg(z1)))), ENCARG(cons_p(cons_add(z0, z1)))) ENCARG(cons_active(cons_add(x0, 0))) -> c3(ACTIVE(add(encArg(x0), 0)), ENCARG(cons_add(x0, 0))) ENCARG(cons_active(cons_add(x0, true))) -> c3(ACTIVE(add(encArg(x0), true)), ENCARG(cons_add(x0, true))) ENCARG(cons_active(cons_add(x0, false))) -> c3(ACTIVE(add(encArg(x0), false)), ENCARG(cons_add(x0, false))) ENCARG(cons_active(cons_add(x0, cons_active(z0)))) -> c3(ACTIVE(add(encArg(x0), active(encArg(z0)))), ENCARG(cons_add(x0, cons_active(z0)))) ENCARG(cons_active(cons_add(x0, cons_mark(z0)))) -> c3(ACTIVE(add(encArg(x0), mark(encArg(z0)))), ENCARG(cons_add(x0, cons_mark(z0)))) ENCARG(cons_active(cons_add(x0, cons_fact(z0)))) -> c3(ACTIVE(add(encArg(x0), fact(encArg(z0)))), ENCARG(cons_add(x0, cons_fact(z0)))) ENCARG(cons_active(cons_add(x0, cons_if(z0, z1, z2)))) -> c3(ACTIVE(add(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_add(x0, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_add(x0, cons_zero(z0)))) -> c3(ACTIVE(add(encArg(x0), zero(encArg(z0)))), ENCARG(cons_add(x0, cons_zero(z0)))) ENCARG(cons_active(cons_add(x0, cons_s(z0)))) -> c3(ACTIVE(add(encArg(x0), s(encArg(z0)))), ENCARG(cons_add(x0, cons_s(z0)))) ENCARG(cons_active(cons_add(x0, cons_prod(z0, z1)))) -> c3(ACTIVE(add(encArg(x0), prod(encArg(z0), encArg(z1)))), ENCARG(cons_add(x0, cons_prod(z0, z1)))) ENCARG(cons_active(cons_add(x0, cons_p(z0)))) -> c3(ACTIVE(add(encArg(x0), p(encArg(z0)))), ENCARG(cons_add(x0, cons_p(z0)))) ENCARG(cons_active(cons_add(x0, cons_add(z0, z1)))) -> c3(ACTIVE(add(encArg(x0), add(encArg(z0), encArg(z1)))), ENCARG(cons_add(x0, cons_add(z0, z1)))) ENCARG(cons_active(cons_add(0, x1))) -> c3(ACTIVE(add(0, encArg(x1))), ENCARG(cons_add(0, x1))) ENCARG(cons_active(cons_add(true, x1))) -> c3(ACTIVE(add(true, encArg(x1))), ENCARG(cons_add(true, x1))) ENCARG(cons_active(cons_add(false, x1))) -> c3(ACTIVE(add(false, encArg(x1))), ENCARG(cons_add(false, x1))) ENCARG(cons_active(cons_add(cons_active(z0), x1))) -> c3(ACTIVE(add(active(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_active(z0), x1))) ENCARG(cons_active(cons_add(cons_mark(z0), x1))) -> c3(ACTIVE(add(mark(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_mark(z0), x1))) ENCARG(cons_active(cons_add(cons_fact(z0), x1))) -> c3(ACTIVE(add(fact(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_fact(z0), x1))) ENCARG(cons_active(cons_add(cons_if(z0, z1, z2), x1))) -> c3(ACTIVE(add(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))), ENCARG(cons_add(cons_if(z0, z1, z2), x1))) ENCARG(cons_active(cons_add(cons_zero(z0), x1))) -> c3(ACTIVE(add(zero(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_zero(z0), x1))) ENCARG(cons_active(cons_add(cons_s(z0), x1))) -> c3(ACTIVE(add(s(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_s(z0), x1))) ENCARG(cons_active(cons_add(cons_prod(z0, z1), x1))) -> c3(ACTIVE(add(prod(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_add(cons_prod(z0, z1), x1))) ENCARG(cons_active(cons_add(cons_p(z0), x1))) -> c3(ACTIVE(add(p(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_p(z0), x1))) ENCARG(cons_active(cons_add(cons_add(z0, z1), x1))) -> c3(ACTIVE(add(add(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_add(cons_add(z0, z1), x1))) ENCARG(cons_mark(cons_active(0))) -> c4(MARK(active(0)), ENCARG(cons_active(0))) ENCARG(cons_mark(cons_active(true))) -> c4(MARK(active(true)), ENCARG(cons_active(true))) ENCARG(cons_mark(cons_active(false))) -> c4(MARK(active(false)), ENCARG(cons_active(false))) ENCARG(cons_mark(cons_active(cons_active(z0)))) -> c4(MARK(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_mark(cons_active(cons_mark(z0)))) -> c4(MARK(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_mark(cons_active(cons_fact(z0)))) -> c4(MARK(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_mark(cons_active(cons_if(z0, z1, z2)))) -> c4(MARK(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_mark(cons_active(cons_zero(z0)))) -> c4(MARK(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_mark(cons_active(cons_s(z0)))) -> c4(MARK(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_mark(cons_active(cons_prod(z0, z1)))) -> c4(MARK(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_mark(cons_active(cons_p(z0)))) -> c4(MARK(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_mark(cons_active(cons_add(z0, z1)))) -> c4(MARK(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4, c_1, c1_1, c3_1 ---------------------------------------- (159) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing nodes: ENCARG(cons_mark(cons_active(true))) -> c4(MARK(active(true)), ENCARG(cons_active(true))) ENCARG(cons_mark(cons_active(false))) -> c4(MARK(active(false)), ENCARG(cons_active(false))) ENCARG(cons_mark(cons_active(0))) -> c4(MARK(active(0)), ENCARG(cons_active(0))) ---------------------------------------- (160) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, 0) -> c(PROD(encArg(x0), 0)) ENCODE_PROD(x0, true) -> c(PROD(encArg(x0), true)) ENCODE_PROD(x0, false) -> c(PROD(encArg(x0), false)) ENCODE_PROD(x0, cons_active(z0)) -> c(PROD(encArg(x0), active(encArg(z0)))) ENCODE_PROD(x0, cons_mark(z0)) -> c(PROD(encArg(x0), mark(encArg(z0)))) ENCODE_PROD(x0, cons_fact(z0)) -> c(PROD(encArg(x0), fact(encArg(z0)))) ENCODE_PROD(x0, cons_if(z0, z1, z2)) -> c(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_PROD(x0, cons_zero(z0)) -> c(PROD(encArg(x0), zero(encArg(z0)))) ENCODE_PROD(x0, cons_s(z0)) -> c(PROD(encArg(x0), s(encArg(z0)))) ENCODE_PROD(x0, cons_prod(z0, z1)) -> c(PROD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, cons_p(z0)) -> c(PROD(encArg(x0), p(encArg(z0)))) ENCODE_PROD(x0, cons_add(z0, z1)) -> c(PROD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_PROD(0, x1) -> c(PROD(0, encArg(x1))) ENCODE_PROD(true, x1) -> c(PROD(true, encArg(x1))) ENCODE_PROD(false, x1) -> c(PROD(false, encArg(x1))) ENCODE_PROD(cons_active(z0), x1) -> c(PROD(active(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_mark(z0), x1) -> c(PROD(mark(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_fact(z0), x1) -> c(PROD(fact(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_if(z0, z1, z2), x1) -> c(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_PROD(cons_zero(z0), x1) -> c(PROD(zero(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_s(z0), x1) -> c(PROD(s(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_prod(z0, z1), x1) -> c(PROD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_PROD(cons_p(z0), x1) -> c(PROD(p(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_add(z0, z1), x1) -> c(PROD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_P(cons_active(z0)) -> c(P(active(encArg(z0)))) ENCODE_P(cons_mark(z0)) -> c(P(mark(encArg(z0)))) ENCODE_P(cons_fact(z0)) -> c(P(fact(encArg(z0)))) ENCODE_P(cons_if(z0, z1, z2)) -> c(P(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_P(cons_zero(z0)) -> c(P(zero(encArg(z0)))) ENCODE_P(cons_s(z0)) -> c(P(s(encArg(z0)))) ENCODE_P(cons_prod(z0, z1)) -> c(P(prod(encArg(z0), encArg(z1)))) ENCODE_P(cons_p(z0)) -> c(P(p(encArg(z0)))) ENCODE_P(cons_add(z0, z1)) -> c(P(add(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, 0) -> c(ADD(encArg(x0), 0)) ENCODE_ADD(x0, true) -> c(ADD(encArg(x0), true)) ENCODE_ADD(x0, false) -> c(ADD(encArg(x0), false)) ENCODE_ADD(x0, cons_active(z0)) -> c(ADD(encArg(x0), active(encArg(z0)))) ENCODE_ADD(x0, cons_mark(z0)) -> c(ADD(encArg(x0), mark(encArg(z0)))) ENCODE_ADD(x0, cons_fact(z0)) -> c(ADD(encArg(x0), fact(encArg(z0)))) ENCODE_ADD(x0, cons_if(z0, z1, z2)) -> c(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ADD(x0, cons_zero(z0)) -> c(ADD(encArg(x0), zero(encArg(z0)))) ENCODE_ADD(x0, cons_s(z0)) -> c(ADD(encArg(x0), s(encArg(z0)))) ENCODE_ADD(x0, cons_prod(z0, z1)) -> c(ADD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, cons_p(z0)) -> c(ADD(encArg(x0), p(encArg(z0)))) ENCODE_ADD(x0, cons_add(z0, z1)) -> c(ADD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_ADD(0, x1) -> c(ADD(0, encArg(x1))) ENCODE_ADD(true, x1) -> c(ADD(true, encArg(x1))) ENCODE_ADD(false, x1) -> c(ADD(false, encArg(x1))) ENCODE_ADD(cons_active(z0), x1) -> c(ADD(active(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_mark(z0), x1) -> c(ADD(mark(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_fact(z0), x1) -> c(ADD(fact(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_if(z0, z1, z2), x1) -> c(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_ADD(cons_zero(z0), x1) -> c(ADD(zero(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_s(z0), x1) -> c(ADD(s(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_prod(z0, z1), x1) -> c(ADD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_ADD(cons_p(z0), x1) -> c(ADD(p(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_add(z0, z1), x1) -> c(ADD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCARG(cons_active(cons_active(cons_active(z0)))) -> c3(ACTIVE(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_active(cons_active(cons_mark(z0)))) -> c3(ACTIVE(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_active(cons_active(cons_fact(z0)))) -> c3(ACTIVE(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_active(cons_active(cons_if(z0, z1, z2)))) -> c3(ACTIVE(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_active(cons_zero(z0)))) -> c3(ACTIVE(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_active(cons_active(cons_s(z0)))) -> c3(ACTIVE(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_active(cons_active(cons_prod(z0, z1)))) -> c3(ACTIVE(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_active(cons_active(cons_p(z0)))) -> c3(ACTIVE(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_active(cons_active(cons_add(z0, z1)))) -> c3(ACTIVE(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(cons_active(z0)))) -> c3(ACTIVE(mark(active(encArg(z0)))), ENCARG(cons_mark(cons_active(z0)))) ENCARG(cons_active(cons_mark(cons_mark(z0)))) -> c3(ACTIVE(mark(mark(encArg(z0)))), ENCARG(cons_mark(cons_mark(z0)))) ENCARG(cons_active(cons_mark(cons_fact(z0)))) -> c3(ACTIVE(mark(fact(encArg(z0)))), ENCARG(cons_mark(cons_fact(z0)))) ENCARG(cons_active(cons_mark(cons_if(z0, z1, z2)))) -> c3(ACTIVE(mark(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_mark(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_mark(cons_zero(z0)))) -> c3(ACTIVE(mark(zero(encArg(z0)))), ENCARG(cons_mark(cons_zero(z0)))) ENCARG(cons_active(cons_mark(cons_s(z0)))) -> c3(ACTIVE(mark(s(encArg(z0)))), ENCARG(cons_mark(cons_s(z0)))) ENCARG(cons_active(cons_mark(cons_prod(z0, z1)))) -> c3(ACTIVE(mark(prod(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_prod(z0, z1)))) ENCARG(cons_active(cons_mark(cons_p(z0)))) -> c3(ACTIVE(mark(p(encArg(z0)))), ENCARG(cons_mark(cons_p(z0)))) ENCARG(cons_active(cons_mark(cons_add(z0, z1)))) -> c3(ACTIVE(mark(add(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(0))) -> c1(ACTIVE(mark(0))) ENCARG(cons_active(cons_mark(0))) -> c1(ENCARG(cons_mark(0))) ENCARG(cons_active(cons_mark(true))) -> c1(ACTIVE(mark(true))) ENCARG(cons_active(cons_mark(true))) -> c1(ENCARG(cons_mark(true))) ENCARG(cons_active(cons_mark(false))) -> c1(ACTIVE(mark(false))) ENCARG(cons_active(cons_mark(false))) -> c1(ENCARG(cons_mark(false))) ENCARG(cons_active(cons_if(x0, x1, 0))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), 0)), ENCARG(cons_if(x0, x1, 0))) ENCARG(cons_active(cons_if(x0, x1, true))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), true)), ENCARG(cons_if(x0, x1, true))) ENCARG(cons_active(cons_if(x0, x1, false))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), false)), ENCARG(cons_if(x0, x1, false))) ENCARG(cons_active(cons_if(x0, x1, cons_active(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), active(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_active(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_mark(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), mark(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_mark(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_fact(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), fact(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_fact(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_if(z0, z1, z2)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_if(x0, x1, cons_zero(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), zero(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_zero(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_s(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), s(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_s(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_prod(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_prod(z0, z1)))) ENCARG(cons_active(cons_if(x0, x1, cons_p(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), p(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_p(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_add(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_add(z0, z1)))) ENCARG(cons_active(cons_if(x0, 0, x2))) -> c3(ACTIVE(if(encArg(x0), 0, encArg(x2))), ENCARG(cons_if(x0, 0, x2))) ENCARG(cons_active(cons_if(x0, true, x2))) -> c3(ACTIVE(if(encArg(x0), true, encArg(x2))), ENCARG(cons_if(x0, true, x2))) ENCARG(cons_active(cons_if(x0, false, x2))) -> c3(ACTIVE(if(encArg(x0), false, encArg(x2))), ENCARG(cons_if(x0, false, x2))) ENCARG(cons_active(cons_if(x0, cons_active(z0), x2))) -> c3(ACTIVE(if(encArg(x0), active(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_active(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_mark(z0), x2))) -> c3(ACTIVE(if(encArg(x0), mark(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_mark(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_fact(z0), x2))) -> c3(ACTIVE(if(encArg(x0), fact(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_fact(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_if(z0, z1, z2), x2))) -> c3(ACTIVE(if(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))), ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2))) ENCARG(cons_active(cons_if(x0, cons_zero(z0), x2))) -> c3(ACTIVE(if(encArg(x0), zero(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_zero(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_s(z0), x2))) -> c3(ACTIVE(if(encArg(x0), s(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_s(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_prod(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_prod(z0, z1), x2))) ENCARG(cons_active(cons_if(x0, cons_p(z0), x2))) -> c3(ACTIVE(if(encArg(x0), p(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_p(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_add(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_add(z0, z1), x2))) ENCARG(cons_active(cons_if(0, x1, x2))) -> c3(ACTIVE(if(0, encArg(x1), encArg(x2))), ENCARG(cons_if(0, x1, x2))) ENCARG(cons_active(cons_if(true, x1, x2))) -> c3(ACTIVE(if(true, encArg(x1), encArg(x2))), ENCARG(cons_if(true, x1, x2))) ENCARG(cons_active(cons_if(false, x1, x2))) -> c3(ACTIVE(if(false, encArg(x1), encArg(x2))), ENCARG(cons_if(false, x1, x2))) ENCARG(cons_active(cons_if(cons_active(z0), x1, x2))) -> c3(ACTIVE(if(active(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_active(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_mark(z0), x1, x2))) -> c3(ACTIVE(if(mark(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_mark(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_fact(z0), x1, x2))) -> c3(ACTIVE(if(fact(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_fact(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_if(z0, z1, z2), x1, x2))) -> c3(ACTIVE(if(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2))) ENCARG(cons_active(cons_if(cons_zero(z0), x1, x2))) -> c3(ACTIVE(if(zero(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_zero(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_s(z0), x1, x2))) -> c3(ACTIVE(if(s(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_s(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_prod(z0, z1), x1, x2))) -> c3(ACTIVE(if(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_prod(z0, z1), x1, x2))) ENCARG(cons_active(cons_if(cons_p(z0), x1, x2))) -> c3(ACTIVE(if(p(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_p(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_add(z0, z1), x1, x2))) -> c3(ACTIVE(if(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_add(z0, z1), x1, x2))) ENCARG(cons_active(cons_zero(cons_active(z0)))) -> c3(ACTIVE(zero(active(encArg(z0)))), ENCARG(cons_zero(cons_active(z0)))) ENCARG(cons_active(cons_zero(cons_mark(z0)))) -> c3(ACTIVE(zero(mark(encArg(z0)))), ENCARG(cons_zero(cons_mark(z0)))) ENCARG(cons_active(cons_zero(cons_fact(z0)))) -> c3(ACTIVE(zero(fact(encArg(z0)))), ENCARG(cons_zero(cons_fact(z0)))) ENCARG(cons_active(cons_zero(cons_if(z0, z1, z2)))) -> c3(ACTIVE(zero(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_zero(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_zero(cons_zero(z0)))) -> c3(ACTIVE(zero(zero(encArg(z0)))), ENCARG(cons_zero(cons_zero(z0)))) ENCARG(cons_active(cons_zero(cons_s(z0)))) -> c3(ACTIVE(zero(s(encArg(z0)))), ENCARG(cons_zero(cons_s(z0)))) ENCARG(cons_active(cons_zero(cons_prod(z0, z1)))) -> c3(ACTIVE(zero(prod(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_prod(z0, z1)))) ENCARG(cons_active(cons_zero(cons_p(z0)))) -> c3(ACTIVE(zero(p(encArg(z0)))), ENCARG(cons_zero(cons_p(z0)))) ENCARG(cons_active(cons_zero(cons_add(z0, z1)))) -> c3(ACTIVE(zero(add(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_add(z0, z1)))) ENCARG(cons_active(cons_zero(0))) -> c3(ACTIVE(zero(0))) ENCARG(cons_active(cons_s(cons_active(z0)))) -> c3(ACTIVE(s(active(encArg(z0)))), ENCARG(cons_s(cons_active(z0)))) ENCARG(cons_active(cons_s(cons_mark(z0)))) -> c3(ACTIVE(s(mark(encArg(z0)))), ENCARG(cons_s(cons_mark(z0)))) ENCARG(cons_active(cons_s(cons_fact(z0)))) -> c3(ACTIVE(s(fact(encArg(z0)))), ENCARG(cons_s(cons_fact(z0)))) ENCARG(cons_active(cons_s(cons_if(z0, z1, z2)))) -> c3(ACTIVE(s(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_s(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_s(cons_zero(z0)))) -> c3(ACTIVE(s(zero(encArg(z0)))), ENCARG(cons_s(cons_zero(z0)))) ENCARG(cons_active(cons_s(cons_s(z0)))) -> c3(ACTIVE(s(s(encArg(z0)))), ENCARG(cons_s(cons_s(z0)))) ENCARG(cons_active(cons_s(cons_prod(z0, z1)))) -> c3(ACTIVE(s(prod(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_prod(z0, z1)))) ENCARG(cons_active(cons_s(cons_p(z0)))) -> c3(ACTIVE(s(p(encArg(z0)))), ENCARG(cons_s(cons_p(z0)))) ENCARG(cons_active(cons_s(cons_add(z0, z1)))) -> c3(ACTIVE(s(add(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_add(z0, z1)))) ENCARG(cons_active(cons_prod(x0, 0))) -> c3(ACTIVE(prod(encArg(x0), 0)), ENCARG(cons_prod(x0, 0))) ENCARG(cons_active(cons_prod(x0, true))) -> c3(ACTIVE(prod(encArg(x0), true)), ENCARG(cons_prod(x0, true))) ENCARG(cons_active(cons_prod(x0, false))) -> c3(ACTIVE(prod(encArg(x0), false)), ENCARG(cons_prod(x0, false))) ENCARG(cons_active(cons_prod(x0, cons_active(z0)))) -> c3(ACTIVE(prod(encArg(x0), active(encArg(z0)))), ENCARG(cons_prod(x0, cons_active(z0)))) ENCARG(cons_active(cons_prod(x0, cons_mark(z0)))) -> c3(ACTIVE(prod(encArg(x0), mark(encArg(z0)))), ENCARG(cons_prod(x0, cons_mark(z0)))) ENCARG(cons_active(cons_prod(x0, cons_fact(z0)))) -> c3(ACTIVE(prod(encArg(x0), fact(encArg(z0)))), ENCARG(cons_prod(x0, cons_fact(z0)))) ENCARG(cons_active(cons_prod(x0, cons_if(z0, z1, z2)))) -> c3(ACTIVE(prod(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_prod(x0, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_prod(x0, cons_zero(z0)))) -> c3(ACTIVE(prod(encArg(x0), zero(encArg(z0)))), ENCARG(cons_prod(x0, cons_zero(z0)))) ENCARG(cons_active(cons_prod(x0, cons_s(z0)))) -> c3(ACTIVE(prod(encArg(x0), s(encArg(z0)))), ENCARG(cons_prod(x0, cons_s(z0)))) ENCARG(cons_active(cons_prod(x0, cons_prod(z0, z1)))) -> c3(ACTIVE(prod(encArg(x0), prod(encArg(z0), encArg(z1)))), ENCARG(cons_prod(x0, cons_prod(z0, z1)))) ENCARG(cons_active(cons_prod(x0, cons_p(z0)))) -> c3(ACTIVE(prod(encArg(x0), p(encArg(z0)))), ENCARG(cons_prod(x0, cons_p(z0)))) ENCARG(cons_active(cons_prod(x0, cons_add(z0, z1)))) -> c3(ACTIVE(prod(encArg(x0), add(encArg(z0), encArg(z1)))), ENCARG(cons_prod(x0, cons_add(z0, z1)))) ENCARG(cons_active(cons_prod(0, x1))) -> c3(ACTIVE(prod(0, encArg(x1))), ENCARG(cons_prod(0, x1))) ENCARG(cons_active(cons_prod(true, x1))) -> c3(ACTIVE(prod(true, encArg(x1))), ENCARG(cons_prod(true, x1))) ENCARG(cons_active(cons_prod(false, x1))) -> c3(ACTIVE(prod(false, encArg(x1))), ENCARG(cons_prod(false, x1))) ENCARG(cons_active(cons_prod(cons_active(z0), x1))) -> c3(ACTIVE(prod(active(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_active(z0), x1))) ENCARG(cons_active(cons_prod(cons_mark(z0), x1))) -> c3(ACTIVE(prod(mark(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_mark(z0), x1))) ENCARG(cons_active(cons_prod(cons_fact(z0), x1))) -> c3(ACTIVE(prod(fact(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_fact(z0), x1))) ENCARG(cons_active(cons_prod(cons_if(z0, z1, z2), x1))) -> c3(ACTIVE(prod(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))), ENCARG(cons_prod(cons_if(z0, z1, z2), x1))) ENCARG(cons_active(cons_prod(cons_zero(z0), x1))) -> c3(ACTIVE(prod(zero(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_zero(z0), x1))) ENCARG(cons_active(cons_prod(cons_s(z0), x1))) -> c3(ACTIVE(prod(s(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_s(z0), x1))) ENCARG(cons_active(cons_prod(cons_prod(z0, z1), x1))) -> c3(ACTIVE(prod(prod(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_prod(cons_prod(z0, z1), x1))) ENCARG(cons_active(cons_prod(cons_p(z0), x1))) -> c3(ACTIVE(prod(p(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_p(z0), x1))) ENCARG(cons_active(cons_prod(cons_add(z0, z1), x1))) -> c3(ACTIVE(prod(add(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_prod(cons_add(z0, z1), x1))) ENCARG(cons_active(cons_p(cons_active(z0)))) -> c3(ACTIVE(p(active(encArg(z0)))), ENCARG(cons_p(cons_active(z0)))) ENCARG(cons_active(cons_p(cons_mark(z0)))) -> c3(ACTIVE(p(mark(encArg(z0)))), ENCARG(cons_p(cons_mark(z0)))) ENCARG(cons_active(cons_p(cons_fact(z0)))) -> c3(ACTIVE(p(fact(encArg(z0)))), ENCARG(cons_p(cons_fact(z0)))) ENCARG(cons_active(cons_p(cons_if(z0, z1, z2)))) -> c3(ACTIVE(p(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_p(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_p(cons_zero(z0)))) -> c3(ACTIVE(p(zero(encArg(z0)))), ENCARG(cons_p(cons_zero(z0)))) ENCARG(cons_active(cons_p(cons_s(z0)))) -> c3(ACTIVE(p(s(encArg(z0)))), ENCARG(cons_p(cons_s(z0)))) ENCARG(cons_active(cons_p(cons_prod(z0, z1)))) -> c3(ACTIVE(p(prod(encArg(z0), encArg(z1)))), ENCARG(cons_p(cons_prod(z0, z1)))) ENCARG(cons_active(cons_p(cons_p(z0)))) -> c3(ACTIVE(p(p(encArg(z0)))), ENCARG(cons_p(cons_p(z0)))) ENCARG(cons_active(cons_p(cons_add(z0, z1)))) -> c3(ACTIVE(p(add(encArg(z0), encArg(z1)))), ENCARG(cons_p(cons_add(z0, z1)))) ENCARG(cons_active(cons_add(x0, 0))) -> c3(ACTIVE(add(encArg(x0), 0)), ENCARG(cons_add(x0, 0))) ENCARG(cons_active(cons_add(x0, true))) -> c3(ACTIVE(add(encArg(x0), true)), ENCARG(cons_add(x0, true))) ENCARG(cons_active(cons_add(x0, false))) -> c3(ACTIVE(add(encArg(x0), false)), ENCARG(cons_add(x0, false))) ENCARG(cons_active(cons_add(x0, cons_active(z0)))) -> c3(ACTIVE(add(encArg(x0), active(encArg(z0)))), ENCARG(cons_add(x0, cons_active(z0)))) ENCARG(cons_active(cons_add(x0, cons_mark(z0)))) -> c3(ACTIVE(add(encArg(x0), mark(encArg(z0)))), ENCARG(cons_add(x0, cons_mark(z0)))) ENCARG(cons_active(cons_add(x0, cons_fact(z0)))) -> c3(ACTIVE(add(encArg(x0), fact(encArg(z0)))), ENCARG(cons_add(x0, cons_fact(z0)))) ENCARG(cons_active(cons_add(x0, cons_if(z0, z1, z2)))) -> c3(ACTIVE(add(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_add(x0, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_add(x0, cons_zero(z0)))) -> c3(ACTIVE(add(encArg(x0), zero(encArg(z0)))), ENCARG(cons_add(x0, cons_zero(z0)))) ENCARG(cons_active(cons_add(x0, cons_s(z0)))) -> c3(ACTIVE(add(encArg(x0), s(encArg(z0)))), ENCARG(cons_add(x0, cons_s(z0)))) ENCARG(cons_active(cons_add(x0, cons_prod(z0, z1)))) -> c3(ACTIVE(add(encArg(x0), prod(encArg(z0), encArg(z1)))), ENCARG(cons_add(x0, cons_prod(z0, z1)))) ENCARG(cons_active(cons_add(x0, cons_p(z0)))) -> c3(ACTIVE(add(encArg(x0), p(encArg(z0)))), ENCARG(cons_add(x0, cons_p(z0)))) ENCARG(cons_active(cons_add(x0, cons_add(z0, z1)))) -> c3(ACTIVE(add(encArg(x0), add(encArg(z0), encArg(z1)))), ENCARG(cons_add(x0, cons_add(z0, z1)))) ENCARG(cons_active(cons_add(0, x1))) -> c3(ACTIVE(add(0, encArg(x1))), ENCARG(cons_add(0, x1))) ENCARG(cons_active(cons_add(true, x1))) -> c3(ACTIVE(add(true, encArg(x1))), ENCARG(cons_add(true, x1))) ENCARG(cons_active(cons_add(false, x1))) -> c3(ACTIVE(add(false, encArg(x1))), ENCARG(cons_add(false, x1))) ENCARG(cons_active(cons_add(cons_active(z0), x1))) -> c3(ACTIVE(add(active(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_active(z0), x1))) ENCARG(cons_active(cons_add(cons_mark(z0), x1))) -> c3(ACTIVE(add(mark(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_mark(z0), x1))) ENCARG(cons_active(cons_add(cons_fact(z0), x1))) -> c3(ACTIVE(add(fact(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_fact(z0), x1))) ENCARG(cons_active(cons_add(cons_if(z0, z1, z2), x1))) -> c3(ACTIVE(add(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))), ENCARG(cons_add(cons_if(z0, z1, z2), x1))) ENCARG(cons_active(cons_add(cons_zero(z0), x1))) -> c3(ACTIVE(add(zero(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_zero(z0), x1))) ENCARG(cons_active(cons_add(cons_s(z0), x1))) -> c3(ACTIVE(add(s(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_s(z0), x1))) ENCARG(cons_active(cons_add(cons_prod(z0, z1), x1))) -> c3(ACTIVE(add(prod(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_add(cons_prod(z0, z1), x1))) ENCARG(cons_active(cons_add(cons_p(z0), x1))) -> c3(ACTIVE(add(p(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_p(z0), x1))) ENCARG(cons_active(cons_add(cons_add(z0, z1), x1))) -> c3(ACTIVE(add(add(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_add(cons_add(z0, z1), x1))) ENCARG(cons_mark(cons_active(cons_active(z0)))) -> c4(MARK(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_mark(cons_active(cons_mark(z0)))) -> c4(MARK(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_mark(cons_active(cons_fact(z0)))) -> c4(MARK(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_mark(cons_active(cons_if(z0, z1, z2)))) -> c4(MARK(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_mark(cons_active(cons_zero(z0)))) -> c4(MARK(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_mark(cons_active(cons_s(z0)))) -> c4(MARK(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_mark(cons_active(cons_prod(z0, z1)))) -> c4(MARK(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_mark(cons_active(cons_p(z0)))) -> c4(MARK(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_mark(cons_active(cons_add(z0, z1)))) -> c4(MARK(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4, c_1, c1_1, c3_1 ---------------------------------------- (161) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCARG(cons_mark(cons_mark(z0))) -> c4(MARK(mark(encArg(z0))), ENCARG(cons_mark(z0))) by ENCARG(cons_mark(cons_mark(0))) -> c4(MARK(mark(0)), ENCARG(cons_mark(0))) ENCARG(cons_mark(cons_mark(true))) -> c4(MARK(mark(true)), ENCARG(cons_mark(true))) ENCARG(cons_mark(cons_mark(false))) -> c4(MARK(mark(false)), ENCARG(cons_mark(false))) ENCARG(cons_mark(cons_mark(cons_active(z0)))) -> c4(MARK(mark(active(encArg(z0)))), ENCARG(cons_mark(cons_active(z0)))) ENCARG(cons_mark(cons_mark(cons_mark(z0)))) -> c4(MARK(mark(mark(encArg(z0)))), ENCARG(cons_mark(cons_mark(z0)))) ENCARG(cons_mark(cons_mark(cons_fact(z0)))) -> c4(MARK(mark(fact(encArg(z0)))), ENCARG(cons_mark(cons_fact(z0)))) ENCARG(cons_mark(cons_mark(cons_if(z0, z1, z2)))) -> c4(MARK(mark(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_mark(cons_if(z0, z1, z2)))) ENCARG(cons_mark(cons_mark(cons_zero(z0)))) -> c4(MARK(mark(zero(encArg(z0)))), ENCARG(cons_mark(cons_zero(z0)))) ENCARG(cons_mark(cons_mark(cons_s(z0)))) -> c4(MARK(mark(s(encArg(z0)))), ENCARG(cons_mark(cons_s(z0)))) ENCARG(cons_mark(cons_mark(cons_prod(z0, z1)))) -> c4(MARK(mark(prod(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_prod(z0, z1)))) ENCARG(cons_mark(cons_mark(cons_p(z0)))) -> c4(MARK(mark(p(encArg(z0)))), ENCARG(cons_mark(cons_p(z0)))) ENCARG(cons_mark(cons_mark(cons_add(z0, z1)))) -> c4(MARK(mark(add(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_add(z0, z1)))) ---------------------------------------- (162) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, 0) -> c(PROD(encArg(x0), 0)) ENCODE_PROD(x0, true) -> c(PROD(encArg(x0), true)) ENCODE_PROD(x0, false) -> c(PROD(encArg(x0), false)) ENCODE_PROD(x0, cons_active(z0)) -> c(PROD(encArg(x0), active(encArg(z0)))) ENCODE_PROD(x0, cons_mark(z0)) -> c(PROD(encArg(x0), mark(encArg(z0)))) ENCODE_PROD(x0, cons_fact(z0)) -> c(PROD(encArg(x0), fact(encArg(z0)))) ENCODE_PROD(x0, cons_if(z0, z1, z2)) -> c(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_PROD(x0, cons_zero(z0)) -> c(PROD(encArg(x0), zero(encArg(z0)))) ENCODE_PROD(x0, cons_s(z0)) -> c(PROD(encArg(x0), s(encArg(z0)))) ENCODE_PROD(x0, cons_prod(z0, z1)) -> c(PROD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, cons_p(z0)) -> c(PROD(encArg(x0), p(encArg(z0)))) ENCODE_PROD(x0, cons_add(z0, z1)) -> c(PROD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_PROD(0, x1) -> c(PROD(0, encArg(x1))) ENCODE_PROD(true, x1) -> c(PROD(true, encArg(x1))) ENCODE_PROD(false, x1) -> c(PROD(false, encArg(x1))) ENCODE_PROD(cons_active(z0), x1) -> c(PROD(active(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_mark(z0), x1) -> c(PROD(mark(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_fact(z0), x1) -> c(PROD(fact(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_if(z0, z1, z2), x1) -> c(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_PROD(cons_zero(z0), x1) -> c(PROD(zero(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_s(z0), x1) -> c(PROD(s(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_prod(z0, z1), x1) -> c(PROD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_PROD(cons_p(z0), x1) -> c(PROD(p(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_add(z0, z1), x1) -> c(PROD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_P(cons_active(z0)) -> c(P(active(encArg(z0)))) ENCODE_P(cons_mark(z0)) -> c(P(mark(encArg(z0)))) ENCODE_P(cons_fact(z0)) -> c(P(fact(encArg(z0)))) ENCODE_P(cons_if(z0, z1, z2)) -> c(P(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_P(cons_zero(z0)) -> c(P(zero(encArg(z0)))) ENCODE_P(cons_s(z0)) -> c(P(s(encArg(z0)))) ENCODE_P(cons_prod(z0, z1)) -> c(P(prod(encArg(z0), encArg(z1)))) ENCODE_P(cons_p(z0)) -> c(P(p(encArg(z0)))) ENCODE_P(cons_add(z0, z1)) -> c(P(add(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, 0) -> c(ADD(encArg(x0), 0)) ENCODE_ADD(x0, true) -> c(ADD(encArg(x0), true)) ENCODE_ADD(x0, false) -> c(ADD(encArg(x0), false)) ENCODE_ADD(x0, cons_active(z0)) -> c(ADD(encArg(x0), active(encArg(z0)))) ENCODE_ADD(x0, cons_mark(z0)) -> c(ADD(encArg(x0), mark(encArg(z0)))) ENCODE_ADD(x0, cons_fact(z0)) -> c(ADD(encArg(x0), fact(encArg(z0)))) ENCODE_ADD(x0, cons_if(z0, z1, z2)) -> c(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ADD(x0, cons_zero(z0)) -> c(ADD(encArg(x0), zero(encArg(z0)))) ENCODE_ADD(x0, cons_s(z0)) -> c(ADD(encArg(x0), s(encArg(z0)))) ENCODE_ADD(x0, cons_prod(z0, z1)) -> c(ADD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, cons_p(z0)) -> c(ADD(encArg(x0), p(encArg(z0)))) ENCODE_ADD(x0, cons_add(z0, z1)) -> c(ADD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_ADD(0, x1) -> c(ADD(0, encArg(x1))) ENCODE_ADD(true, x1) -> c(ADD(true, encArg(x1))) ENCODE_ADD(false, x1) -> c(ADD(false, encArg(x1))) ENCODE_ADD(cons_active(z0), x1) -> c(ADD(active(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_mark(z0), x1) -> c(ADD(mark(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_fact(z0), x1) -> c(ADD(fact(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_if(z0, z1, z2), x1) -> c(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_ADD(cons_zero(z0), x1) -> c(ADD(zero(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_s(z0), x1) -> c(ADD(s(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_prod(z0, z1), x1) -> c(ADD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_ADD(cons_p(z0), x1) -> c(ADD(p(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_add(z0, z1), x1) -> c(ADD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCARG(cons_active(cons_active(cons_active(z0)))) -> c3(ACTIVE(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_active(cons_active(cons_mark(z0)))) -> c3(ACTIVE(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_active(cons_active(cons_fact(z0)))) -> c3(ACTIVE(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_active(cons_active(cons_if(z0, z1, z2)))) -> c3(ACTIVE(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_active(cons_zero(z0)))) -> c3(ACTIVE(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_active(cons_active(cons_s(z0)))) -> c3(ACTIVE(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_active(cons_active(cons_prod(z0, z1)))) -> c3(ACTIVE(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_active(cons_active(cons_p(z0)))) -> c3(ACTIVE(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_active(cons_active(cons_add(z0, z1)))) -> c3(ACTIVE(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(cons_active(z0)))) -> c3(ACTIVE(mark(active(encArg(z0)))), ENCARG(cons_mark(cons_active(z0)))) ENCARG(cons_active(cons_mark(cons_mark(z0)))) -> c3(ACTIVE(mark(mark(encArg(z0)))), ENCARG(cons_mark(cons_mark(z0)))) ENCARG(cons_active(cons_mark(cons_fact(z0)))) -> c3(ACTIVE(mark(fact(encArg(z0)))), ENCARG(cons_mark(cons_fact(z0)))) ENCARG(cons_active(cons_mark(cons_if(z0, z1, z2)))) -> c3(ACTIVE(mark(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_mark(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_mark(cons_zero(z0)))) -> c3(ACTIVE(mark(zero(encArg(z0)))), ENCARG(cons_mark(cons_zero(z0)))) ENCARG(cons_active(cons_mark(cons_s(z0)))) -> c3(ACTIVE(mark(s(encArg(z0)))), ENCARG(cons_mark(cons_s(z0)))) ENCARG(cons_active(cons_mark(cons_prod(z0, z1)))) -> c3(ACTIVE(mark(prod(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_prod(z0, z1)))) ENCARG(cons_active(cons_mark(cons_p(z0)))) -> c3(ACTIVE(mark(p(encArg(z0)))), ENCARG(cons_mark(cons_p(z0)))) ENCARG(cons_active(cons_mark(cons_add(z0, z1)))) -> c3(ACTIVE(mark(add(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(0))) -> c1(ACTIVE(mark(0))) ENCARG(cons_active(cons_mark(0))) -> c1(ENCARG(cons_mark(0))) ENCARG(cons_active(cons_mark(true))) -> c1(ACTIVE(mark(true))) ENCARG(cons_active(cons_mark(true))) -> c1(ENCARG(cons_mark(true))) ENCARG(cons_active(cons_mark(false))) -> c1(ACTIVE(mark(false))) ENCARG(cons_active(cons_mark(false))) -> c1(ENCARG(cons_mark(false))) ENCARG(cons_active(cons_if(x0, x1, 0))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), 0)), ENCARG(cons_if(x0, x1, 0))) ENCARG(cons_active(cons_if(x0, x1, true))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), true)), ENCARG(cons_if(x0, x1, true))) ENCARG(cons_active(cons_if(x0, x1, false))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), false)), ENCARG(cons_if(x0, x1, false))) ENCARG(cons_active(cons_if(x0, x1, cons_active(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), active(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_active(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_mark(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), mark(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_mark(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_fact(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), fact(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_fact(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_if(z0, z1, z2)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_if(x0, x1, cons_zero(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), zero(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_zero(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_s(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), s(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_s(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_prod(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_prod(z0, z1)))) ENCARG(cons_active(cons_if(x0, x1, cons_p(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), p(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_p(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_add(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_add(z0, z1)))) ENCARG(cons_active(cons_if(x0, 0, x2))) -> c3(ACTIVE(if(encArg(x0), 0, encArg(x2))), ENCARG(cons_if(x0, 0, x2))) ENCARG(cons_active(cons_if(x0, true, x2))) -> c3(ACTIVE(if(encArg(x0), true, encArg(x2))), ENCARG(cons_if(x0, true, x2))) ENCARG(cons_active(cons_if(x0, false, x2))) -> c3(ACTIVE(if(encArg(x0), false, encArg(x2))), ENCARG(cons_if(x0, false, x2))) ENCARG(cons_active(cons_if(x0, cons_active(z0), x2))) -> c3(ACTIVE(if(encArg(x0), active(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_active(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_mark(z0), x2))) -> c3(ACTIVE(if(encArg(x0), mark(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_mark(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_fact(z0), x2))) -> c3(ACTIVE(if(encArg(x0), fact(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_fact(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_if(z0, z1, z2), x2))) -> c3(ACTIVE(if(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))), ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2))) ENCARG(cons_active(cons_if(x0, cons_zero(z0), x2))) -> c3(ACTIVE(if(encArg(x0), zero(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_zero(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_s(z0), x2))) -> c3(ACTIVE(if(encArg(x0), s(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_s(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_prod(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_prod(z0, z1), x2))) ENCARG(cons_active(cons_if(x0, cons_p(z0), x2))) -> c3(ACTIVE(if(encArg(x0), p(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_p(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_add(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_add(z0, z1), x2))) ENCARG(cons_active(cons_if(0, x1, x2))) -> c3(ACTIVE(if(0, encArg(x1), encArg(x2))), ENCARG(cons_if(0, x1, x2))) ENCARG(cons_active(cons_if(true, x1, x2))) -> c3(ACTIVE(if(true, encArg(x1), encArg(x2))), ENCARG(cons_if(true, x1, x2))) ENCARG(cons_active(cons_if(false, x1, x2))) -> c3(ACTIVE(if(false, encArg(x1), encArg(x2))), ENCARG(cons_if(false, x1, x2))) ENCARG(cons_active(cons_if(cons_active(z0), x1, x2))) -> c3(ACTIVE(if(active(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_active(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_mark(z0), x1, x2))) -> c3(ACTIVE(if(mark(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_mark(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_fact(z0), x1, x2))) -> c3(ACTIVE(if(fact(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_fact(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_if(z0, z1, z2), x1, x2))) -> c3(ACTIVE(if(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2))) ENCARG(cons_active(cons_if(cons_zero(z0), x1, x2))) -> c3(ACTIVE(if(zero(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_zero(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_s(z0), x1, x2))) -> c3(ACTIVE(if(s(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_s(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_prod(z0, z1), x1, x2))) -> c3(ACTIVE(if(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_prod(z0, z1), x1, x2))) ENCARG(cons_active(cons_if(cons_p(z0), x1, x2))) -> c3(ACTIVE(if(p(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_p(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_add(z0, z1), x1, x2))) -> c3(ACTIVE(if(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_add(z0, z1), x1, x2))) ENCARG(cons_active(cons_zero(cons_active(z0)))) -> c3(ACTIVE(zero(active(encArg(z0)))), ENCARG(cons_zero(cons_active(z0)))) ENCARG(cons_active(cons_zero(cons_mark(z0)))) -> c3(ACTIVE(zero(mark(encArg(z0)))), ENCARG(cons_zero(cons_mark(z0)))) ENCARG(cons_active(cons_zero(cons_fact(z0)))) -> c3(ACTIVE(zero(fact(encArg(z0)))), ENCARG(cons_zero(cons_fact(z0)))) ENCARG(cons_active(cons_zero(cons_if(z0, z1, z2)))) -> c3(ACTIVE(zero(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_zero(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_zero(cons_zero(z0)))) -> c3(ACTIVE(zero(zero(encArg(z0)))), ENCARG(cons_zero(cons_zero(z0)))) ENCARG(cons_active(cons_zero(cons_s(z0)))) -> c3(ACTIVE(zero(s(encArg(z0)))), ENCARG(cons_zero(cons_s(z0)))) ENCARG(cons_active(cons_zero(cons_prod(z0, z1)))) -> c3(ACTIVE(zero(prod(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_prod(z0, z1)))) ENCARG(cons_active(cons_zero(cons_p(z0)))) -> c3(ACTIVE(zero(p(encArg(z0)))), ENCARG(cons_zero(cons_p(z0)))) ENCARG(cons_active(cons_zero(cons_add(z0, z1)))) -> c3(ACTIVE(zero(add(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_add(z0, z1)))) ENCARG(cons_active(cons_zero(0))) -> c3(ACTIVE(zero(0))) ENCARG(cons_active(cons_s(cons_active(z0)))) -> c3(ACTIVE(s(active(encArg(z0)))), ENCARG(cons_s(cons_active(z0)))) ENCARG(cons_active(cons_s(cons_mark(z0)))) -> c3(ACTIVE(s(mark(encArg(z0)))), ENCARG(cons_s(cons_mark(z0)))) ENCARG(cons_active(cons_s(cons_fact(z0)))) -> c3(ACTIVE(s(fact(encArg(z0)))), ENCARG(cons_s(cons_fact(z0)))) ENCARG(cons_active(cons_s(cons_if(z0, z1, z2)))) -> c3(ACTIVE(s(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_s(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_s(cons_zero(z0)))) -> c3(ACTIVE(s(zero(encArg(z0)))), ENCARG(cons_s(cons_zero(z0)))) ENCARG(cons_active(cons_s(cons_s(z0)))) -> c3(ACTIVE(s(s(encArg(z0)))), ENCARG(cons_s(cons_s(z0)))) ENCARG(cons_active(cons_s(cons_prod(z0, z1)))) -> c3(ACTIVE(s(prod(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_prod(z0, z1)))) ENCARG(cons_active(cons_s(cons_p(z0)))) -> c3(ACTIVE(s(p(encArg(z0)))), ENCARG(cons_s(cons_p(z0)))) ENCARG(cons_active(cons_s(cons_add(z0, z1)))) -> c3(ACTIVE(s(add(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_add(z0, z1)))) ENCARG(cons_active(cons_prod(x0, 0))) -> c3(ACTIVE(prod(encArg(x0), 0)), ENCARG(cons_prod(x0, 0))) ENCARG(cons_active(cons_prod(x0, true))) -> c3(ACTIVE(prod(encArg(x0), true)), ENCARG(cons_prod(x0, true))) ENCARG(cons_active(cons_prod(x0, false))) -> c3(ACTIVE(prod(encArg(x0), false)), ENCARG(cons_prod(x0, false))) ENCARG(cons_active(cons_prod(x0, cons_active(z0)))) -> c3(ACTIVE(prod(encArg(x0), active(encArg(z0)))), ENCARG(cons_prod(x0, cons_active(z0)))) ENCARG(cons_active(cons_prod(x0, cons_mark(z0)))) -> c3(ACTIVE(prod(encArg(x0), mark(encArg(z0)))), ENCARG(cons_prod(x0, cons_mark(z0)))) ENCARG(cons_active(cons_prod(x0, cons_fact(z0)))) -> c3(ACTIVE(prod(encArg(x0), fact(encArg(z0)))), ENCARG(cons_prod(x0, cons_fact(z0)))) ENCARG(cons_active(cons_prod(x0, cons_if(z0, z1, z2)))) -> c3(ACTIVE(prod(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_prod(x0, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_prod(x0, cons_zero(z0)))) -> c3(ACTIVE(prod(encArg(x0), zero(encArg(z0)))), ENCARG(cons_prod(x0, cons_zero(z0)))) ENCARG(cons_active(cons_prod(x0, cons_s(z0)))) -> c3(ACTIVE(prod(encArg(x0), s(encArg(z0)))), ENCARG(cons_prod(x0, cons_s(z0)))) ENCARG(cons_active(cons_prod(x0, cons_prod(z0, z1)))) -> c3(ACTIVE(prod(encArg(x0), prod(encArg(z0), encArg(z1)))), ENCARG(cons_prod(x0, cons_prod(z0, z1)))) ENCARG(cons_active(cons_prod(x0, cons_p(z0)))) -> c3(ACTIVE(prod(encArg(x0), p(encArg(z0)))), ENCARG(cons_prod(x0, cons_p(z0)))) ENCARG(cons_active(cons_prod(x0, cons_add(z0, z1)))) -> c3(ACTIVE(prod(encArg(x0), add(encArg(z0), encArg(z1)))), ENCARG(cons_prod(x0, cons_add(z0, z1)))) ENCARG(cons_active(cons_prod(0, x1))) -> c3(ACTIVE(prod(0, encArg(x1))), ENCARG(cons_prod(0, x1))) ENCARG(cons_active(cons_prod(true, x1))) -> c3(ACTIVE(prod(true, encArg(x1))), ENCARG(cons_prod(true, x1))) ENCARG(cons_active(cons_prod(false, x1))) -> c3(ACTIVE(prod(false, encArg(x1))), ENCARG(cons_prod(false, x1))) ENCARG(cons_active(cons_prod(cons_active(z0), x1))) -> c3(ACTIVE(prod(active(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_active(z0), x1))) ENCARG(cons_active(cons_prod(cons_mark(z0), x1))) -> c3(ACTIVE(prod(mark(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_mark(z0), x1))) ENCARG(cons_active(cons_prod(cons_fact(z0), x1))) -> c3(ACTIVE(prod(fact(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_fact(z0), x1))) ENCARG(cons_active(cons_prod(cons_if(z0, z1, z2), x1))) -> c3(ACTIVE(prod(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))), ENCARG(cons_prod(cons_if(z0, z1, z2), x1))) ENCARG(cons_active(cons_prod(cons_zero(z0), x1))) -> c3(ACTIVE(prod(zero(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_zero(z0), x1))) ENCARG(cons_active(cons_prod(cons_s(z0), x1))) -> c3(ACTIVE(prod(s(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_s(z0), x1))) ENCARG(cons_active(cons_prod(cons_prod(z0, z1), x1))) -> c3(ACTIVE(prod(prod(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_prod(cons_prod(z0, z1), x1))) ENCARG(cons_active(cons_prod(cons_p(z0), x1))) -> c3(ACTIVE(prod(p(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_p(z0), x1))) ENCARG(cons_active(cons_prod(cons_add(z0, z1), x1))) -> c3(ACTIVE(prod(add(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_prod(cons_add(z0, z1), x1))) ENCARG(cons_active(cons_p(cons_active(z0)))) -> c3(ACTIVE(p(active(encArg(z0)))), ENCARG(cons_p(cons_active(z0)))) ENCARG(cons_active(cons_p(cons_mark(z0)))) -> c3(ACTIVE(p(mark(encArg(z0)))), ENCARG(cons_p(cons_mark(z0)))) ENCARG(cons_active(cons_p(cons_fact(z0)))) -> c3(ACTIVE(p(fact(encArg(z0)))), ENCARG(cons_p(cons_fact(z0)))) ENCARG(cons_active(cons_p(cons_if(z0, z1, z2)))) -> c3(ACTIVE(p(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_p(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_p(cons_zero(z0)))) -> c3(ACTIVE(p(zero(encArg(z0)))), ENCARG(cons_p(cons_zero(z0)))) ENCARG(cons_active(cons_p(cons_s(z0)))) -> c3(ACTIVE(p(s(encArg(z0)))), ENCARG(cons_p(cons_s(z0)))) ENCARG(cons_active(cons_p(cons_prod(z0, z1)))) -> c3(ACTIVE(p(prod(encArg(z0), encArg(z1)))), ENCARG(cons_p(cons_prod(z0, z1)))) ENCARG(cons_active(cons_p(cons_p(z0)))) -> c3(ACTIVE(p(p(encArg(z0)))), ENCARG(cons_p(cons_p(z0)))) ENCARG(cons_active(cons_p(cons_add(z0, z1)))) -> c3(ACTIVE(p(add(encArg(z0), encArg(z1)))), ENCARG(cons_p(cons_add(z0, z1)))) ENCARG(cons_active(cons_add(x0, 0))) -> c3(ACTIVE(add(encArg(x0), 0)), ENCARG(cons_add(x0, 0))) ENCARG(cons_active(cons_add(x0, true))) -> c3(ACTIVE(add(encArg(x0), true)), ENCARG(cons_add(x0, true))) ENCARG(cons_active(cons_add(x0, false))) -> c3(ACTIVE(add(encArg(x0), false)), ENCARG(cons_add(x0, false))) ENCARG(cons_active(cons_add(x0, cons_active(z0)))) -> c3(ACTIVE(add(encArg(x0), active(encArg(z0)))), ENCARG(cons_add(x0, cons_active(z0)))) ENCARG(cons_active(cons_add(x0, cons_mark(z0)))) -> c3(ACTIVE(add(encArg(x0), mark(encArg(z0)))), ENCARG(cons_add(x0, cons_mark(z0)))) ENCARG(cons_active(cons_add(x0, cons_fact(z0)))) -> c3(ACTIVE(add(encArg(x0), fact(encArg(z0)))), ENCARG(cons_add(x0, cons_fact(z0)))) ENCARG(cons_active(cons_add(x0, cons_if(z0, z1, z2)))) -> c3(ACTIVE(add(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_add(x0, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_add(x0, cons_zero(z0)))) -> c3(ACTIVE(add(encArg(x0), zero(encArg(z0)))), ENCARG(cons_add(x0, cons_zero(z0)))) ENCARG(cons_active(cons_add(x0, cons_s(z0)))) -> c3(ACTIVE(add(encArg(x0), s(encArg(z0)))), ENCARG(cons_add(x0, cons_s(z0)))) ENCARG(cons_active(cons_add(x0, cons_prod(z0, z1)))) -> c3(ACTIVE(add(encArg(x0), prod(encArg(z0), encArg(z1)))), ENCARG(cons_add(x0, cons_prod(z0, z1)))) ENCARG(cons_active(cons_add(x0, cons_p(z0)))) -> c3(ACTIVE(add(encArg(x0), p(encArg(z0)))), ENCARG(cons_add(x0, cons_p(z0)))) ENCARG(cons_active(cons_add(x0, cons_add(z0, z1)))) -> c3(ACTIVE(add(encArg(x0), add(encArg(z0), encArg(z1)))), ENCARG(cons_add(x0, cons_add(z0, z1)))) ENCARG(cons_active(cons_add(0, x1))) -> c3(ACTIVE(add(0, encArg(x1))), ENCARG(cons_add(0, x1))) ENCARG(cons_active(cons_add(true, x1))) -> c3(ACTIVE(add(true, encArg(x1))), ENCARG(cons_add(true, x1))) ENCARG(cons_active(cons_add(false, x1))) -> c3(ACTIVE(add(false, encArg(x1))), ENCARG(cons_add(false, x1))) ENCARG(cons_active(cons_add(cons_active(z0), x1))) -> c3(ACTIVE(add(active(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_active(z0), x1))) ENCARG(cons_active(cons_add(cons_mark(z0), x1))) -> c3(ACTIVE(add(mark(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_mark(z0), x1))) ENCARG(cons_active(cons_add(cons_fact(z0), x1))) -> c3(ACTIVE(add(fact(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_fact(z0), x1))) ENCARG(cons_active(cons_add(cons_if(z0, z1, z2), x1))) -> c3(ACTIVE(add(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))), ENCARG(cons_add(cons_if(z0, z1, z2), x1))) ENCARG(cons_active(cons_add(cons_zero(z0), x1))) -> c3(ACTIVE(add(zero(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_zero(z0), x1))) ENCARG(cons_active(cons_add(cons_s(z0), x1))) -> c3(ACTIVE(add(s(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_s(z0), x1))) ENCARG(cons_active(cons_add(cons_prod(z0, z1), x1))) -> c3(ACTIVE(add(prod(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_add(cons_prod(z0, z1), x1))) ENCARG(cons_active(cons_add(cons_p(z0), x1))) -> c3(ACTIVE(add(p(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_p(z0), x1))) ENCARG(cons_active(cons_add(cons_add(z0, z1), x1))) -> c3(ACTIVE(add(add(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_add(cons_add(z0, z1), x1))) ENCARG(cons_mark(cons_active(cons_active(z0)))) -> c4(MARK(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_mark(cons_active(cons_mark(z0)))) -> c4(MARK(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_mark(cons_active(cons_fact(z0)))) -> c4(MARK(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_mark(cons_active(cons_if(z0, z1, z2)))) -> c4(MARK(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_mark(cons_active(cons_zero(z0)))) -> c4(MARK(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_mark(cons_active(cons_s(z0)))) -> c4(MARK(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_mark(cons_active(cons_prod(z0, z1)))) -> c4(MARK(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_mark(cons_active(cons_p(z0)))) -> c4(MARK(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_mark(cons_active(cons_add(z0, z1)))) -> c4(MARK(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) ENCARG(cons_mark(cons_mark(0))) -> c4(MARK(mark(0)), ENCARG(cons_mark(0))) ENCARG(cons_mark(cons_mark(true))) -> c4(MARK(mark(true)), ENCARG(cons_mark(true))) ENCARG(cons_mark(cons_mark(false))) -> c4(MARK(mark(false)), ENCARG(cons_mark(false))) ENCARG(cons_mark(cons_mark(cons_active(z0)))) -> c4(MARK(mark(active(encArg(z0)))), ENCARG(cons_mark(cons_active(z0)))) ENCARG(cons_mark(cons_mark(cons_mark(z0)))) -> c4(MARK(mark(mark(encArg(z0)))), ENCARG(cons_mark(cons_mark(z0)))) ENCARG(cons_mark(cons_mark(cons_fact(z0)))) -> c4(MARK(mark(fact(encArg(z0)))), ENCARG(cons_mark(cons_fact(z0)))) ENCARG(cons_mark(cons_mark(cons_if(z0, z1, z2)))) -> c4(MARK(mark(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_mark(cons_if(z0, z1, z2)))) ENCARG(cons_mark(cons_mark(cons_zero(z0)))) -> c4(MARK(mark(zero(encArg(z0)))), ENCARG(cons_mark(cons_zero(z0)))) ENCARG(cons_mark(cons_mark(cons_s(z0)))) -> c4(MARK(mark(s(encArg(z0)))), ENCARG(cons_mark(cons_s(z0)))) ENCARG(cons_mark(cons_mark(cons_prod(z0, z1)))) -> c4(MARK(mark(prod(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_prod(z0, z1)))) ENCARG(cons_mark(cons_mark(cons_p(z0)))) -> c4(MARK(mark(p(encArg(z0)))), ENCARG(cons_mark(cons_p(z0)))) ENCARG(cons_mark(cons_mark(cons_add(z0, z1)))) -> c4(MARK(mark(add(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_add(z0, z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4, c_1, c1_1, c3_1 ---------------------------------------- (163) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (164) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, 0) -> c(PROD(encArg(x0), 0)) ENCODE_PROD(x0, true) -> c(PROD(encArg(x0), true)) ENCODE_PROD(x0, false) -> c(PROD(encArg(x0), false)) ENCODE_PROD(x0, cons_active(z0)) -> c(PROD(encArg(x0), active(encArg(z0)))) ENCODE_PROD(x0, cons_mark(z0)) -> c(PROD(encArg(x0), mark(encArg(z0)))) ENCODE_PROD(x0, cons_fact(z0)) -> c(PROD(encArg(x0), fact(encArg(z0)))) ENCODE_PROD(x0, cons_if(z0, z1, z2)) -> c(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_PROD(x0, cons_zero(z0)) -> c(PROD(encArg(x0), zero(encArg(z0)))) ENCODE_PROD(x0, cons_s(z0)) -> c(PROD(encArg(x0), s(encArg(z0)))) ENCODE_PROD(x0, cons_prod(z0, z1)) -> c(PROD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, cons_p(z0)) -> c(PROD(encArg(x0), p(encArg(z0)))) ENCODE_PROD(x0, cons_add(z0, z1)) -> c(PROD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_PROD(0, x1) -> c(PROD(0, encArg(x1))) ENCODE_PROD(true, x1) -> c(PROD(true, encArg(x1))) ENCODE_PROD(false, x1) -> c(PROD(false, encArg(x1))) ENCODE_PROD(cons_active(z0), x1) -> c(PROD(active(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_mark(z0), x1) -> c(PROD(mark(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_fact(z0), x1) -> c(PROD(fact(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_if(z0, z1, z2), x1) -> c(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_PROD(cons_zero(z0), x1) -> c(PROD(zero(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_s(z0), x1) -> c(PROD(s(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_prod(z0, z1), x1) -> c(PROD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_PROD(cons_p(z0), x1) -> c(PROD(p(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_add(z0, z1), x1) -> c(PROD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_P(cons_active(z0)) -> c(P(active(encArg(z0)))) ENCODE_P(cons_mark(z0)) -> c(P(mark(encArg(z0)))) ENCODE_P(cons_fact(z0)) -> c(P(fact(encArg(z0)))) ENCODE_P(cons_if(z0, z1, z2)) -> c(P(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_P(cons_zero(z0)) -> c(P(zero(encArg(z0)))) ENCODE_P(cons_s(z0)) -> c(P(s(encArg(z0)))) ENCODE_P(cons_prod(z0, z1)) -> c(P(prod(encArg(z0), encArg(z1)))) ENCODE_P(cons_p(z0)) -> c(P(p(encArg(z0)))) ENCODE_P(cons_add(z0, z1)) -> c(P(add(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, 0) -> c(ADD(encArg(x0), 0)) ENCODE_ADD(x0, true) -> c(ADD(encArg(x0), true)) ENCODE_ADD(x0, false) -> c(ADD(encArg(x0), false)) ENCODE_ADD(x0, cons_active(z0)) -> c(ADD(encArg(x0), active(encArg(z0)))) ENCODE_ADD(x0, cons_mark(z0)) -> c(ADD(encArg(x0), mark(encArg(z0)))) ENCODE_ADD(x0, cons_fact(z0)) -> c(ADD(encArg(x0), fact(encArg(z0)))) ENCODE_ADD(x0, cons_if(z0, z1, z2)) -> c(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ADD(x0, cons_zero(z0)) -> c(ADD(encArg(x0), zero(encArg(z0)))) ENCODE_ADD(x0, cons_s(z0)) -> c(ADD(encArg(x0), s(encArg(z0)))) ENCODE_ADD(x0, cons_prod(z0, z1)) -> c(ADD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, cons_p(z0)) -> c(ADD(encArg(x0), p(encArg(z0)))) ENCODE_ADD(x0, cons_add(z0, z1)) -> c(ADD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_ADD(0, x1) -> c(ADD(0, encArg(x1))) ENCODE_ADD(true, x1) -> c(ADD(true, encArg(x1))) ENCODE_ADD(false, x1) -> c(ADD(false, encArg(x1))) ENCODE_ADD(cons_active(z0), x1) -> c(ADD(active(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_mark(z0), x1) -> c(ADD(mark(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_fact(z0), x1) -> c(ADD(fact(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_if(z0, z1, z2), x1) -> c(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_ADD(cons_zero(z0), x1) -> c(ADD(zero(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_s(z0), x1) -> c(ADD(s(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_prod(z0, z1), x1) -> c(ADD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_ADD(cons_p(z0), x1) -> c(ADD(p(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_add(z0, z1), x1) -> c(ADD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCARG(cons_active(cons_active(cons_active(z0)))) -> c3(ACTIVE(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_active(cons_active(cons_mark(z0)))) -> c3(ACTIVE(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_active(cons_active(cons_fact(z0)))) -> c3(ACTIVE(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_active(cons_active(cons_if(z0, z1, z2)))) -> c3(ACTIVE(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_active(cons_zero(z0)))) -> c3(ACTIVE(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_active(cons_active(cons_s(z0)))) -> c3(ACTIVE(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_active(cons_active(cons_prod(z0, z1)))) -> c3(ACTIVE(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_active(cons_active(cons_p(z0)))) -> c3(ACTIVE(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_active(cons_active(cons_add(z0, z1)))) -> c3(ACTIVE(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(cons_active(z0)))) -> c3(ACTIVE(mark(active(encArg(z0)))), ENCARG(cons_mark(cons_active(z0)))) ENCARG(cons_active(cons_mark(cons_mark(z0)))) -> c3(ACTIVE(mark(mark(encArg(z0)))), ENCARG(cons_mark(cons_mark(z0)))) ENCARG(cons_active(cons_mark(cons_fact(z0)))) -> c3(ACTIVE(mark(fact(encArg(z0)))), ENCARG(cons_mark(cons_fact(z0)))) ENCARG(cons_active(cons_mark(cons_if(z0, z1, z2)))) -> c3(ACTIVE(mark(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_mark(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_mark(cons_zero(z0)))) -> c3(ACTIVE(mark(zero(encArg(z0)))), ENCARG(cons_mark(cons_zero(z0)))) ENCARG(cons_active(cons_mark(cons_s(z0)))) -> c3(ACTIVE(mark(s(encArg(z0)))), ENCARG(cons_mark(cons_s(z0)))) ENCARG(cons_active(cons_mark(cons_prod(z0, z1)))) -> c3(ACTIVE(mark(prod(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_prod(z0, z1)))) ENCARG(cons_active(cons_mark(cons_p(z0)))) -> c3(ACTIVE(mark(p(encArg(z0)))), ENCARG(cons_mark(cons_p(z0)))) ENCARG(cons_active(cons_mark(cons_add(z0, z1)))) -> c3(ACTIVE(mark(add(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(0))) -> c1(ACTIVE(mark(0))) ENCARG(cons_active(cons_mark(0))) -> c1(ENCARG(cons_mark(0))) ENCARG(cons_active(cons_mark(true))) -> c1(ACTIVE(mark(true))) ENCARG(cons_active(cons_mark(true))) -> c1(ENCARG(cons_mark(true))) ENCARG(cons_active(cons_mark(false))) -> c1(ACTIVE(mark(false))) ENCARG(cons_active(cons_mark(false))) -> c1(ENCARG(cons_mark(false))) ENCARG(cons_active(cons_if(x0, x1, 0))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), 0)), ENCARG(cons_if(x0, x1, 0))) ENCARG(cons_active(cons_if(x0, x1, true))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), true)), ENCARG(cons_if(x0, x1, true))) ENCARG(cons_active(cons_if(x0, x1, false))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), false)), ENCARG(cons_if(x0, x1, false))) ENCARG(cons_active(cons_if(x0, x1, cons_active(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), active(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_active(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_mark(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), mark(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_mark(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_fact(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), fact(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_fact(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_if(z0, z1, z2)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_if(x0, x1, cons_zero(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), zero(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_zero(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_s(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), s(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_s(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_prod(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_prod(z0, z1)))) ENCARG(cons_active(cons_if(x0, x1, cons_p(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), p(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_p(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_add(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_add(z0, z1)))) ENCARG(cons_active(cons_if(x0, 0, x2))) -> c3(ACTIVE(if(encArg(x0), 0, encArg(x2))), ENCARG(cons_if(x0, 0, x2))) ENCARG(cons_active(cons_if(x0, true, x2))) -> c3(ACTIVE(if(encArg(x0), true, encArg(x2))), ENCARG(cons_if(x0, true, x2))) ENCARG(cons_active(cons_if(x0, false, x2))) -> c3(ACTIVE(if(encArg(x0), false, encArg(x2))), ENCARG(cons_if(x0, false, x2))) ENCARG(cons_active(cons_if(x0, cons_active(z0), x2))) -> c3(ACTIVE(if(encArg(x0), active(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_active(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_mark(z0), x2))) -> c3(ACTIVE(if(encArg(x0), mark(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_mark(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_fact(z0), x2))) -> c3(ACTIVE(if(encArg(x0), fact(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_fact(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_if(z0, z1, z2), x2))) -> c3(ACTIVE(if(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))), ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2))) ENCARG(cons_active(cons_if(x0, cons_zero(z0), x2))) -> c3(ACTIVE(if(encArg(x0), zero(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_zero(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_s(z0), x2))) -> c3(ACTIVE(if(encArg(x0), s(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_s(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_prod(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_prod(z0, z1), x2))) ENCARG(cons_active(cons_if(x0, cons_p(z0), x2))) -> c3(ACTIVE(if(encArg(x0), p(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_p(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_add(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_add(z0, z1), x2))) ENCARG(cons_active(cons_if(0, x1, x2))) -> c3(ACTIVE(if(0, encArg(x1), encArg(x2))), ENCARG(cons_if(0, x1, x2))) ENCARG(cons_active(cons_if(true, x1, x2))) -> c3(ACTIVE(if(true, encArg(x1), encArg(x2))), ENCARG(cons_if(true, x1, x2))) ENCARG(cons_active(cons_if(false, x1, x2))) -> c3(ACTIVE(if(false, encArg(x1), encArg(x2))), ENCARG(cons_if(false, x1, x2))) ENCARG(cons_active(cons_if(cons_active(z0), x1, x2))) -> c3(ACTIVE(if(active(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_active(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_mark(z0), x1, x2))) -> c3(ACTIVE(if(mark(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_mark(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_fact(z0), x1, x2))) -> c3(ACTIVE(if(fact(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_fact(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_if(z0, z1, z2), x1, x2))) -> c3(ACTIVE(if(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2))) ENCARG(cons_active(cons_if(cons_zero(z0), x1, x2))) -> c3(ACTIVE(if(zero(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_zero(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_s(z0), x1, x2))) -> c3(ACTIVE(if(s(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_s(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_prod(z0, z1), x1, x2))) -> c3(ACTIVE(if(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_prod(z0, z1), x1, x2))) ENCARG(cons_active(cons_if(cons_p(z0), x1, x2))) -> c3(ACTIVE(if(p(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_p(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_add(z0, z1), x1, x2))) -> c3(ACTIVE(if(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_add(z0, z1), x1, x2))) ENCARG(cons_active(cons_zero(cons_active(z0)))) -> c3(ACTIVE(zero(active(encArg(z0)))), ENCARG(cons_zero(cons_active(z0)))) ENCARG(cons_active(cons_zero(cons_mark(z0)))) -> c3(ACTIVE(zero(mark(encArg(z0)))), ENCARG(cons_zero(cons_mark(z0)))) ENCARG(cons_active(cons_zero(cons_fact(z0)))) -> c3(ACTIVE(zero(fact(encArg(z0)))), ENCARG(cons_zero(cons_fact(z0)))) ENCARG(cons_active(cons_zero(cons_if(z0, z1, z2)))) -> c3(ACTIVE(zero(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_zero(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_zero(cons_zero(z0)))) -> c3(ACTIVE(zero(zero(encArg(z0)))), ENCARG(cons_zero(cons_zero(z0)))) ENCARG(cons_active(cons_zero(cons_s(z0)))) -> c3(ACTIVE(zero(s(encArg(z0)))), ENCARG(cons_zero(cons_s(z0)))) ENCARG(cons_active(cons_zero(cons_prod(z0, z1)))) -> c3(ACTIVE(zero(prod(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_prod(z0, z1)))) ENCARG(cons_active(cons_zero(cons_p(z0)))) -> c3(ACTIVE(zero(p(encArg(z0)))), ENCARG(cons_zero(cons_p(z0)))) ENCARG(cons_active(cons_zero(cons_add(z0, z1)))) -> c3(ACTIVE(zero(add(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_add(z0, z1)))) ENCARG(cons_active(cons_zero(0))) -> c3(ACTIVE(zero(0))) ENCARG(cons_active(cons_s(cons_active(z0)))) -> c3(ACTIVE(s(active(encArg(z0)))), ENCARG(cons_s(cons_active(z0)))) ENCARG(cons_active(cons_s(cons_mark(z0)))) -> c3(ACTIVE(s(mark(encArg(z0)))), ENCARG(cons_s(cons_mark(z0)))) ENCARG(cons_active(cons_s(cons_fact(z0)))) -> c3(ACTIVE(s(fact(encArg(z0)))), ENCARG(cons_s(cons_fact(z0)))) ENCARG(cons_active(cons_s(cons_if(z0, z1, z2)))) -> c3(ACTIVE(s(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_s(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_s(cons_zero(z0)))) -> c3(ACTIVE(s(zero(encArg(z0)))), ENCARG(cons_s(cons_zero(z0)))) ENCARG(cons_active(cons_s(cons_s(z0)))) -> c3(ACTIVE(s(s(encArg(z0)))), ENCARG(cons_s(cons_s(z0)))) ENCARG(cons_active(cons_s(cons_prod(z0, z1)))) -> c3(ACTIVE(s(prod(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_prod(z0, z1)))) ENCARG(cons_active(cons_s(cons_p(z0)))) -> c3(ACTIVE(s(p(encArg(z0)))), ENCARG(cons_s(cons_p(z0)))) ENCARG(cons_active(cons_s(cons_add(z0, z1)))) -> c3(ACTIVE(s(add(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_add(z0, z1)))) ENCARG(cons_active(cons_prod(x0, 0))) -> c3(ACTIVE(prod(encArg(x0), 0)), ENCARG(cons_prod(x0, 0))) ENCARG(cons_active(cons_prod(x0, true))) -> c3(ACTIVE(prod(encArg(x0), true)), ENCARG(cons_prod(x0, true))) ENCARG(cons_active(cons_prod(x0, false))) -> c3(ACTIVE(prod(encArg(x0), false)), ENCARG(cons_prod(x0, false))) ENCARG(cons_active(cons_prod(x0, cons_active(z0)))) -> c3(ACTIVE(prod(encArg(x0), active(encArg(z0)))), ENCARG(cons_prod(x0, cons_active(z0)))) ENCARG(cons_active(cons_prod(x0, cons_mark(z0)))) -> c3(ACTIVE(prod(encArg(x0), mark(encArg(z0)))), ENCARG(cons_prod(x0, cons_mark(z0)))) ENCARG(cons_active(cons_prod(x0, cons_fact(z0)))) -> c3(ACTIVE(prod(encArg(x0), fact(encArg(z0)))), ENCARG(cons_prod(x0, cons_fact(z0)))) ENCARG(cons_active(cons_prod(x0, cons_if(z0, z1, z2)))) -> c3(ACTIVE(prod(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_prod(x0, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_prod(x0, cons_zero(z0)))) -> c3(ACTIVE(prod(encArg(x0), zero(encArg(z0)))), ENCARG(cons_prod(x0, cons_zero(z0)))) ENCARG(cons_active(cons_prod(x0, cons_s(z0)))) -> c3(ACTIVE(prod(encArg(x0), s(encArg(z0)))), ENCARG(cons_prod(x0, cons_s(z0)))) ENCARG(cons_active(cons_prod(x0, cons_prod(z0, z1)))) -> c3(ACTIVE(prod(encArg(x0), prod(encArg(z0), encArg(z1)))), ENCARG(cons_prod(x0, cons_prod(z0, z1)))) ENCARG(cons_active(cons_prod(x0, cons_p(z0)))) -> c3(ACTIVE(prod(encArg(x0), p(encArg(z0)))), ENCARG(cons_prod(x0, cons_p(z0)))) ENCARG(cons_active(cons_prod(x0, cons_add(z0, z1)))) -> c3(ACTIVE(prod(encArg(x0), add(encArg(z0), encArg(z1)))), ENCARG(cons_prod(x0, cons_add(z0, z1)))) ENCARG(cons_active(cons_prod(0, x1))) -> c3(ACTIVE(prod(0, encArg(x1))), ENCARG(cons_prod(0, x1))) ENCARG(cons_active(cons_prod(true, x1))) -> c3(ACTIVE(prod(true, encArg(x1))), ENCARG(cons_prod(true, x1))) ENCARG(cons_active(cons_prod(false, x1))) -> c3(ACTIVE(prod(false, encArg(x1))), ENCARG(cons_prod(false, x1))) ENCARG(cons_active(cons_prod(cons_active(z0), x1))) -> c3(ACTIVE(prod(active(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_active(z0), x1))) ENCARG(cons_active(cons_prod(cons_mark(z0), x1))) -> c3(ACTIVE(prod(mark(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_mark(z0), x1))) ENCARG(cons_active(cons_prod(cons_fact(z0), x1))) -> c3(ACTIVE(prod(fact(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_fact(z0), x1))) ENCARG(cons_active(cons_prod(cons_if(z0, z1, z2), x1))) -> c3(ACTIVE(prod(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))), ENCARG(cons_prod(cons_if(z0, z1, z2), x1))) ENCARG(cons_active(cons_prod(cons_zero(z0), x1))) -> c3(ACTIVE(prod(zero(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_zero(z0), x1))) ENCARG(cons_active(cons_prod(cons_s(z0), x1))) -> c3(ACTIVE(prod(s(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_s(z0), x1))) ENCARG(cons_active(cons_prod(cons_prod(z0, z1), x1))) -> c3(ACTIVE(prod(prod(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_prod(cons_prod(z0, z1), x1))) ENCARG(cons_active(cons_prod(cons_p(z0), x1))) -> c3(ACTIVE(prod(p(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_p(z0), x1))) ENCARG(cons_active(cons_prod(cons_add(z0, z1), x1))) -> c3(ACTIVE(prod(add(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_prod(cons_add(z0, z1), x1))) ENCARG(cons_active(cons_p(cons_active(z0)))) -> c3(ACTIVE(p(active(encArg(z0)))), ENCARG(cons_p(cons_active(z0)))) ENCARG(cons_active(cons_p(cons_mark(z0)))) -> c3(ACTIVE(p(mark(encArg(z0)))), ENCARG(cons_p(cons_mark(z0)))) ENCARG(cons_active(cons_p(cons_fact(z0)))) -> c3(ACTIVE(p(fact(encArg(z0)))), ENCARG(cons_p(cons_fact(z0)))) ENCARG(cons_active(cons_p(cons_if(z0, z1, z2)))) -> c3(ACTIVE(p(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_p(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_p(cons_zero(z0)))) -> c3(ACTIVE(p(zero(encArg(z0)))), ENCARG(cons_p(cons_zero(z0)))) ENCARG(cons_active(cons_p(cons_s(z0)))) -> c3(ACTIVE(p(s(encArg(z0)))), ENCARG(cons_p(cons_s(z0)))) ENCARG(cons_active(cons_p(cons_prod(z0, z1)))) -> c3(ACTIVE(p(prod(encArg(z0), encArg(z1)))), ENCARG(cons_p(cons_prod(z0, z1)))) ENCARG(cons_active(cons_p(cons_p(z0)))) -> c3(ACTIVE(p(p(encArg(z0)))), ENCARG(cons_p(cons_p(z0)))) ENCARG(cons_active(cons_p(cons_add(z0, z1)))) -> c3(ACTIVE(p(add(encArg(z0), encArg(z1)))), ENCARG(cons_p(cons_add(z0, z1)))) ENCARG(cons_active(cons_add(x0, 0))) -> c3(ACTIVE(add(encArg(x0), 0)), ENCARG(cons_add(x0, 0))) ENCARG(cons_active(cons_add(x0, true))) -> c3(ACTIVE(add(encArg(x0), true)), ENCARG(cons_add(x0, true))) ENCARG(cons_active(cons_add(x0, false))) -> c3(ACTIVE(add(encArg(x0), false)), ENCARG(cons_add(x0, false))) ENCARG(cons_active(cons_add(x0, cons_active(z0)))) -> c3(ACTIVE(add(encArg(x0), active(encArg(z0)))), ENCARG(cons_add(x0, cons_active(z0)))) ENCARG(cons_active(cons_add(x0, cons_mark(z0)))) -> c3(ACTIVE(add(encArg(x0), mark(encArg(z0)))), ENCARG(cons_add(x0, cons_mark(z0)))) ENCARG(cons_active(cons_add(x0, cons_fact(z0)))) -> c3(ACTIVE(add(encArg(x0), fact(encArg(z0)))), ENCARG(cons_add(x0, cons_fact(z0)))) ENCARG(cons_active(cons_add(x0, cons_if(z0, z1, z2)))) -> c3(ACTIVE(add(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_add(x0, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_add(x0, cons_zero(z0)))) -> c3(ACTIVE(add(encArg(x0), zero(encArg(z0)))), ENCARG(cons_add(x0, cons_zero(z0)))) ENCARG(cons_active(cons_add(x0, cons_s(z0)))) -> c3(ACTIVE(add(encArg(x0), s(encArg(z0)))), ENCARG(cons_add(x0, cons_s(z0)))) ENCARG(cons_active(cons_add(x0, cons_prod(z0, z1)))) -> c3(ACTIVE(add(encArg(x0), prod(encArg(z0), encArg(z1)))), ENCARG(cons_add(x0, cons_prod(z0, z1)))) ENCARG(cons_active(cons_add(x0, cons_p(z0)))) -> c3(ACTIVE(add(encArg(x0), p(encArg(z0)))), ENCARG(cons_add(x0, cons_p(z0)))) ENCARG(cons_active(cons_add(x0, cons_add(z0, z1)))) -> c3(ACTIVE(add(encArg(x0), add(encArg(z0), encArg(z1)))), ENCARG(cons_add(x0, cons_add(z0, z1)))) ENCARG(cons_active(cons_add(0, x1))) -> c3(ACTIVE(add(0, encArg(x1))), ENCARG(cons_add(0, x1))) ENCARG(cons_active(cons_add(true, x1))) -> c3(ACTIVE(add(true, encArg(x1))), ENCARG(cons_add(true, x1))) ENCARG(cons_active(cons_add(false, x1))) -> c3(ACTIVE(add(false, encArg(x1))), ENCARG(cons_add(false, x1))) ENCARG(cons_active(cons_add(cons_active(z0), x1))) -> c3(ACTIVE(add(active(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_active(z0), x1))) ENCARG(cons_active(cons_add(cons_mark(z0), x1))) -> c3(ACTIVE(add(mark(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_mark(z0), x1))) ENCARG(cons_active(cons_add(cons_fact(z0), x1))) -> c3(ACTIVE(add(fact(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_fact(z0), x1))) ENCARG(cons_active(cons_add(cons_if(z0, z1, z2), x1))) -> c3(ACTIVE(add(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))), ENCARG(cons_add(cons_if(z0, z1, z2), x1))) ENCARG(cons_active(cons_add(cons_zero(z0), x1))) -> c3(ACTIVE(add(zero(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_zero(z0), x1))) ENCARG(cons_active(cons_add(cons_s(z0), x1))) -> c3(ACTIVE(add(s(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_s(z0), x1))) ENCARG(cons_active(cons_add(cons_prod(z0, z1), x1))) -> c3(ACTIVE(add(prod(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_add(cons_prod(z0, z1), x1))) ENCARG(cons_active(cons_add(cons_p(z0), x1))) -> c3(ACTIVE(add(p(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_p(z0), x1))) ENCARG(cons_active(cons_add(cons_add(z0, z1), x1))) -> c3(ACTIVE(add(add(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_add(cons_add(z0, z1), x1))) ENCARG(cons_mark(cons_active(cons_active(z0)))) -> c4(MARK(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_mark(cons_active(cons_mark(z0)))) -> c4(MARK(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_mark(cons_active(cons_fact(z0)))) -> c4(MARK(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_mark(cons_active(cons_if(z0, z1, z2)))) -> c4(MARK(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_mark(cons_active(cons_zero(z0)))) -> c4(MARK(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_mark(cons_active(cons_s(z0)))) -> c4(MARK(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_mark(cons_active(cons_prod(z0, z1)))) -> c4(MARK(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_mark(cons_active(cons_p(z0)))) -> c4(MARK(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_mark(cons_active(cons_add(z0, z1)))) -> c4(MARK(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) ENCARG(cons_mark(cons_mark(cons_active(z0)))) -> c4(MARK(mark(active(encArg(z0)))), ENCARG(cons_mark(cons_active(z0)))) ENCARG(cons_mark(cons_mark(cons_mark(z0)))) -> c4(MARK(mark(mark(encArg(z0)))), ENCARG(cons_mark(cons_mark(z0)))) ENCARG(cons_mark(cons_mark(cons_fact(z0)))) -> c4(MARK(mark(fact(encArg(z0)))), ENCARG(cons_mark(cons_fact(z0)))) ENCARG(cons_mark(cons_mark(cons_if(z0, z1, z2)))) -> c4(MARK(mark(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_mark(cons_if(z0, z1, z2)))) ENCARG(cons_mark(cons_mark(cons_zero(z0)))) -> c4(MARK(mark(zero(encArg(z0)))), ENCARG(cons_mark(cons_zero(z0)))) ENCARG(cons_mark(cons_mark(cons_s(z0)))) -> c4(MARK(mark(s(encArg(z0)))), ENCARG(cons_mark(cons_s(z0)))) ENCARG(cons_mark(cons_mark(cons_prod(z0, z1)))) -> c4(MARK(mark(prod(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_prod(z0, z1)))) ENCARG(cons_mark(cons_mark(cons_p(z0)))) -> c4(MARK(mark(p(encArg(z0)))), ENCARG(cons_mark(cons_p(z0)))) ENCARG(cons_mark(cons_mark(cons_add(z0, z1)))) -> c4(MARK(mark(add(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_add(z0, z1)))) ENCARG(cons_mark(cons_mark(0))) -> c2(MARK(mark(0))) ENCARG(cons_mark(cons_mark(0))) -> c2(ENCARG(cons_mark(0))) ENCARG(cons_mark(cons_mark(true))) -> c2(MARK(mark(true))) ENCARG(cons_mark(cons_mark(true))) -> c2(ENCARG(cons_mark(true))) ENCARG(cons_mark(cons_mark(false))) -> c2(MARK(mark(false))) ENCARG(cons_mark(cons_mark(false))) -> c2(ENCARG(cons_mark(false))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4, c_1, c1_1, c3_1, c2_1 ---------------------------------------- (165) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace ENCARG(cons_fact(cons_fact(z0))) -> c5(FACT(fact(encArg(z0))), ENCARG(cons_fact(z0))) by ENCARG(cons_fact(cons_fact(0))) -> c5(FACT(fact(0)), ENCARG(cons_fact(0))) ENCARG(cons_fact(cons_fact(true))) -> c5(FACT(fact(true)), ENCARG(cons_fact(true))) ENCARG(cons_fact(cons_fact(false))) -> c5(FACT(fact(false)), ENCARG(cons_fact(false))) ENCARG(cons_fact(cons_fact(cons_active(z0)))) -> c5(FACT(fact(active(encArg(z0)))), ENCARG(cons_fact(cons_active(z0)))) ENCARG(cons_fact(cons_fact(cons_mark(z0)))) -> c5(FACT(fact(mark(encArg(z0)))), ENCARG(cons_fact(cons_mark(z0)))) ENCARG(cons_fact(cons_fact(cons_fact(z0)))) -> c5(FACT(fact(fact(encArg(z0)))), ENCARG(cons_fact(cons_fact(z0)))) ENCARG(cons_fact(cons_fact(cons_if(z0, z1, z2)))) -> c5(FACT(fact(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_fact(cons_if(z0, z1, z2)))) ENCARG(cons_fact(cons_fact(cons_zero(z0)))) -> c5(FACT(fact(zero(encArg(z0)))), ENCARG(cons_fact(cons_zero(z0)))) ENCARG(cons_fact(cons_fact(cons_s(z0)))) -> c5(FACT(fact(s(encArg(z0)))), ENCARG(cons_fact(cons_s(z0)))) ENCARG(cons_fact(cons_fact(cons_prod(z0, z1)))) -> c5(FACT(fact(prod(encArg(z0), encArg(z1)))), ENCARG(cons_fact(cons_prod(z0, z1)))) ENCARG(cons_fact(cons_fact(cons_p(z0)))) -> c5(FACT(fact(p(encArg(z0)))), ENCARG(cons_fact(cons_p(z0)))) ENCARG(cons_fact(cons_fact(cons_add(z0, z1)))) -> c5(FACT(fact(add(encArg(z0), encArg(z1)))), ENCARG(cons_fact(cons_add(z0, z1)))) ---------------------------------------- (166) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, 0) -> c(PROD(encArg(x0), 0)) ENCODE_PROD(x0, true) -> c(PROD(encArg(x0), true)) ENCODE_PROD(x0, false) -> c(PROD(encArg(x0), false)) ENCODE_PROD(x0, cons_active(z0)) -> c(PROD(encArg(x0), active(encArg(z0)))) ENCODE_PROD(x0, cons_mark(z0)) -> c(PROD(encArg(x0), mark(encArg(z0)))) ENCODE_PROD(x0, cons_fact(z0)) -> c(PROD(encArg(x0), fact(encArg(z0)))) ENCODE_PROD(x0, cons_if(z0, z1, z2)) -> c(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_PROD(x0, cons_zero(z0)) -> c(PROD(encArg(x0), zero(encArg(z0)))) ENCODE_PROD(x0, cons_s(z0)) -> c(PROD(encArg(x0), s(encArg(z0)))) ENCODE_PROD(x0, cons_prod(z0, z1)) -> c(PROD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, cons_p(z0)) -> c(PROD(encArg(x0), p(encArg(z0)))) ENCODE_PROD(x0, cons_add(z0, z1)) -> c(PROD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_PROD(0, x1) -> c(PROD(0, encArg(x1))) ENCODE_PROD(true, x1) -> c(PROD(true, encArg(x1))) ENCODE_PROD(false, x1) -> c(PROD(false, encArg(x1))) ENCODE_PROD(cons_active(z0), x1) -> c(PROD(active(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_mark(z0), x1) -> c(PROD(mark(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_fact(z0), x1) -> c(PROD(fact(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_if(z0, z1, z2), x1) -> c(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_PROD(cons_zero(z0), x1) -> c(PROD(zero(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_s(z0), x1) -> c(PROD(s(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_prod(z0, z1), x1) -> c(PROD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_PROD(cons_p(z0), x1) -> c(PROD(p(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_add(z0, z1), x1) -> c(PROD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_P(cons_active(z0)) -> c(P(active(encArg(z0)))) ENCODE_P(cons_mark(z0)) -> c(P(mark(encArg(z0)))) ENCODE_P(cons_fact(z0)) -> c(P(fact(encArg(z0)))) ENCODE_P(cons_if(z0, z1, z2)) -> c(P(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_P(cons_zero(z0)) -> c(P(zero(encArg(z0)))) ENCODE_P(cons_s(z0)) -> c(P(s(encArg(z0)))) ENCODE_P(cons_prod(z0, z1)) -> c(P(prod(encArg(z0), encArg(z1)))) ENCODE_P(cons_p(z0)) -> c(P(p(encArg(z0)))) ENCODE_P(cons_add(z0, z1)) -> c(P(add(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, 0) -> c(ADD(encArg(x0), 0)) ENCODE_ADD(x0, true) -> c(ADD(encArg(x0), true)) ENCODE_ADD(x0, false) -> c(ADD(encArg(x0), false)) ENCODE_ADD(x0, cons_active(z0)) -> c(ADD(encArg(x0), active(encArg(z0)))) ENCODE_ADD(x0, cons_mark(z0)) -> c(ADD(encArg(x0), mark(encArg(z0)))) ENCODE_ADD(x0, cons_fact(z0)) -> c(ADD(encArg(x0), fact(encArg(z0)))) ENCODE_ADD(x0, cons_if(z0, z1, z2)) -> c(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ADD(x0, cons_zero(z0)) -> c(ADD(encArg(x0), zero(encArg(z0)))) ENCODE_ADD(x0, cons_s(z0)) -> c(ADD(encArg(x0), s(encArg(z0)))) ENCODE_ADD(x0, cons_prod(z0, z1)) -> c(ADD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, cons_p(z0)) -> c(ADD(encArg(x0), p(encArg(z0)))) ENCODE_ADD(x0, cons_add(z0, z1)) -> c(ADD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_ADD(0, x1) -> c(ADD(0, encArg(x1))) ENCODE_ADD(true, x1) -> c(ADD(true, encArg(x1))) ENCODE_ADD(false, x1) -> c(ADD(false, encArg(x1))) ENCODE_ADD(cons_active(z0), x1) -> c(ADD(active(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_mark(z0), x1) -> c(ADD(mark(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_fact(z0), x1) -> c(ADD(fact(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_if(z0, z1, z2), x1) -> c(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_ADD(cons_zero(z0), x1) -> c(ADD(zero(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_s(z0), x1) -> c(ADD(s(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_prod(z0, z1), x1) -> c(ADD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_ADD(cons_p(z0), x1) -> c(ADD(p(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_add(z0, z1), x1) -> c(ADD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCARG(cons_active(cons_active(cons_active(z0)))) -> c3(ACTIVE(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_active(cons_active(cons_mark(z0)))) -> c3(ACTIVE(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_active(cons_active(cons_fact(z0)))) -> c3(ACTIVE(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_active(cons_active(cons_if(z0, z1, z2)))) -> c3(ACTIVE(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_active(cons_zero(z0)))) -> c3(ACTIVE(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_active(cons_active(cons_s(z0)))) -> c3(ACTIVE(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_active(cons_active(cons_prod(z0, z1)))) -> c3(ACTIVE(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_active(cons_active(cons_p(z0)))) -> c3(ACTIVE(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_active(cons_active(cons_add(z0, z1)))) -> c3(ACTIVE(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(cons_active(z0)))) -> c3(ACTIVE(mark(active(encArg(z0)))), ENCARG(cons_mark(cons_active(z0)))) ENCARG(cons_active(cons_mark(cons_mark(z0)))) -> c3(ACTIVE(mark(mark(encArg(z0)))), ENCARG(cons_mark(cons_mark(z0)))) ENCARG(cons_active(cons_mark(cons_fact(z0)))) -> c3(ACTIVE(mark(fact(encArg(z0)))), ENCARG(cons_mark(cons_fact(z0)))) ENCARG(cons_active(cons_mark(cons_if(z0, z1, z2)))) -> c3(ACTIVE(mark(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_mark(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_mark(cons_zero(z0)))) -> c3(ACTIVE(mark(zero(encArg(z0)))), ENCARG(cons_mark(cons_zero(z0)))) ENCARG(cons_active(cons_mark(cons_s(z0)))) -> c3(ACTIVE(mark(s(encArg(z0)))), ENCARG(cons_mark(cons_s(z0)))) ENCARG(cons_active(cons_mark(cons_prod(z0, z1)))) -> c3(ACTIVE(mark(prod(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_prod(z0, z1)))) ENCARG(cons_active(cons_mark(cons_p(z0)))) -> c3(ACTIVE(mark(p(encArg(z0)))), ENCARG(cons_mark(cons_p(z0)))) ENCARG(cons_active(cons_mark(cons_add(z0, z1)))) -> c3(ACTIVE(mark(add(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(0))) -> c1(ACTIVE(mark(0))) ENCARG(cons_active(cons_mark(0))) -> c1(ENCARG(cons_mark(0))) ENCARG(cons_active(cons_mark(true))) -> c1(ACTIVE(mark(true))) ENCARG(cons_active(cons_mark(true))) -> c1(ENCARG(cons_mark(true))) ENCARG(cons_active(cons_mark(false))) -> c1(ACTIVE(mark(false))) ENCARG(cons_active(cons_mark(false))) -> c1(ENCARG(cons_mark(false))) ENCARG(cons_active(cons_if(x0, x1, 0))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), 0)), ENCARG(cons_if(x0, x1, 0))) ENCARG(cons_active(cons_if(x0, x1, true))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), true)), ENCARG(cons_if(x0, x1, true))) ENCARG(cons_active(cons_if(x0, x1, false))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), false)), ENCARG(cons_if(x0, x1, false))) ENCARG(cons_active(cons_if(x0, x1, cons_active(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), active(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_active(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_mark(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), mark(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_mark(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_fact(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), fact(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_fact(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_if(z0, z1, z2)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_if(x0, x1, cons_zero(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), zero(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_zero(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_s(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), s(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_s(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_prod(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_prod(z0, z1)))) ENCARG(cons_active(cons_if(x0, x1, cons_p(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), p(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_p(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_add(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_add(z0, z1)))) ENCARG(cons_active(cons_if(x0, 0, x2))) -> c3(ACTIVE(if(encArg(x0), 0, encArg(x2))), ENCARG(cons_if(x0, 0, x2))) ENCARG(cons_active(cons_if(x0, true, x2))) -> c3(ACTIVE(if(encArg(x0), true, encArg(x2))), ENCARG(cons_if(x0, true, x2))) ENCARG(cons_active(cons_if(x0, false, x2))) -> c3(ACTIVE(if(encArg(x0), false, encArg(x2))), ENCARG(cons_if(x0, false, x2))) ENCARG(cons_active(cons_if(x0, cons_active(z0), x2))) -> c3(ACTIVE(if(encArg(x0), active(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_active(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_mark(z0), x2))) -> c3(ACTIVE(if(encArg(x0), mark(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_mark(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_fact(z0), x2))) -> c3(ACTIVE(if(encArg(x0), fact(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_fact(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_if(z0, z1, z2), x2))) -> c3(ACTIVE(if(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))), ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2))) ENCARG(cons_active(cons_if(x0, cons_zero(z0), x2))) -> c3(ACTIVE(if(encArg(x0), zero(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_zero(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_s(z0), x2))) -> c3(ACTIVE(if(encArg(x0), s(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_s(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_prod(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_prod(z0, z1), x2))) ENCARG(cons_active(cons_if(x0, cons_p(z0), x2))) -> c3(ACTIVE(if(encArg(x0), p(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_p(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_add(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_add(z0, z1), x2))) ENCARG(cons_active(cons_if(0, x1, x2))) -> c3(ACTIVE(if(0, encArg(x1), encArg(x2))), ENCARG(cons_if(0, x1, x2))) ENCARG(cons_active(cons_if(true, x1, x2))) -> c3(ACTIVE(if(true, encArg(x1), encArg(x2))), ENCARG(cons_if(true, x1, x2))) ENCARG(cons_active(cons_if(false, x1, x2))) -> c3(ACTIVE(if(false, encArg(x1), encArg(x2))), ENCARG(cons_if(false, x1, x2))) ENCARG(cons_active(cons_if(cons_active(z0), x1, x2))) -> c3(ACTIVE(if(active(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_active(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_mark(z0), x1, x2))) -> c3(ACTIVE(if(mark(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_mark(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_fact(z0), x1, x2))) -> c3(ACTIVE(if(fact(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_fact(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_if(z0, z1, z2), x1, x2))) -> c3(ACTIVE(if(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2))) ENCARG(cons_active(cons_if(cons_zero(z0), x1, x2))) -> c3(ACTIVE(if(zero(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_zero(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_s(z0), x1, x2))) -> c3(ACTIVE(if(s(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_s(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_prod(z0, z1), x1, x2))) -> c3(ACTIVE(if(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_prod(z0, z1), x1, x2))) ENCARG(cons_active(cons_if(cons_p(z0), x1, x2))) -> c3(ACTIVE(if(p(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_p(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_add(z0, z1), x1, x2))) -> c3(ACTIVE(if(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_add(z0, z1), x1, x2))) ENCARG(cons_active(cons_zero(cons_active(z0)))) -> c3(ACTIVE(zero(active(encArg(z0)))), ENCARG(cons_zero(cons_active(z0)))) ENCARG(cons_active(cons_zero(cons_mark(z0)))) -> c3(ACTIVE(zero(mark(encArg(z0)))), ENCARG(cons_zero(cons_mark(z0)))) ENCARG(cons_active(cons_zero(cons_fact(z0)))) -> c3(ACTIVE(zero(fact(encArg(z0)))), ENCARG(cons_zero(cons_fact(z0)))) ENCARG(cons_active(cons_zero(cons_if(z0, z1, z2)))) -> c3(ACTIVE(zero(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_zero(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_zero(cons_zero(z0)))) -> c3(ACTIVE(zero(zero(encArg(z0)))), ENCARG(cons_zero(cons_zero(z0)))) ENCARG(cons_active(cons_zero(cons_s(z0)))) -> c3(ACTIVE(zero(s(encArg(z0)))), ENCARG(cons_zero(cons_s(z0)))) ENCARG(cons_active(cons_zero(cons_prod(z0, z1)))) -> c3(ACTIVE(zero(prod(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_prod(z0, z1)))) ENCARG(cons_active(cons_zero(cons_p(z0)))) -> c3(ACTIVE(zero(p(encArg(z0)))), ENCARG(cons_zero(cons_p(z0)))) ENCARG(cons_active(cons_zero(cons_add(z0, z1)))) -> c3(ACTIVE(zero(add(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_add(z0, z1)))) ENCARG(cons_active(cons_zero(0))) -> c3(ACTIVE(zero(0))) ENCARG(cons_active(cons_s(cons_active(z0)))) -> c3(ACTIVE(s(active(encArg(z0)))), ENCARG(cons_s(cons_active(z0)))) ENCARG(cons_active(cons_s(cons_mark(z0)))) -> c3(ACTIVE(s(mark(encArg(z0)))), ENCARG(cons_s(cons_mark(z0)))) ENCARG(cons_active(cons_s(cons_fact(z0)))) -> c3(ACTIVE(s(fact(encArg(z0)))), ENCARG(cons_s(cons_fact(z0)))) ENCARG(cons_active(cons_s(cons_if(z0, z1, z2)))) -> c3(ACTIVE(s(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_s(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_s(cons_zero(z0)))) -> c3(ACTIVE(s(zero(encArg(z0)))), ENCARG(cons_s(cons_zero(z0)))) ENCARG(cons_active(cons_s(cons_s(z0)))) -> c3(ACTIVE(s(s(encArg(z0)))), ENCARG(cons_s(cons_s(z0)))) ENCARG(cons_active(cons_s(cons_prod(z0, z1)))) -> c3(ACTIVE(s(prod(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_prod(z0, z1)))) ENCARG(cons_active(cons_s(cons_p(z0)))) -> c3(ACTIVE(s(p(encArg(z0)))), ENCARG(cons_s(cons_p(z0)))) ENCARG(cons_active(cons_s(cons_add(z0, z1)))) -> c3(ACTIVE(s(add(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_add(z0, z1)))) ENCARG(cons_active(cons_prod(x0, 0))) -> c3(ACTIVE(prod(encArg(x0), 0)), ENCARG(cons_prod(x0, 0))) ENCARG(cons_active(cons_prod(x0, true))) -> c3(ACTIVE(prod(encArg(x0), true)), ENCARG(cons_prod(x0, true))) ENCARG(cons_active(cons_prod(x0, false))) -> c3(ACTIVE(prod(encArg(x0), false)), ENCARG(cons_prod(x0, false))) ENCARG(cons_active(cons_prod(x0, cons_active(z0)))) -> c3(ACTIVE(prod(encArg(x0), active(encArg(z0)))), ENCARG(cons_prod(x0, cons_active(z0)))) ENCARG(cons_active(cons_prod(x0, cons_mark(z0)))) -> c3(ACTIVE(prod(encArg(x0), mark(encArg(z0)))), ENCARG(cons_prod(x0, cons_mark(z0)))) ENCARG(cons_active(cons_prod(x0, cons_fact(z0)))) -> c3(ACTIVE(prod(encArg(x0), fact(encArg(z0)))), ENCARG(cons_prod(x0, cons_fact(z0)))) ENCARG(cons_active(cons_prod(x0, cons_if(z0, z1, z2)))) -> c3(ACTIVE(prod(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_prod(x0, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_prod(x0, cons_zero(z0)))) -> c3(ACTIVE(prod(encArg(x0), zero(encArg(z0)))), ENCARG(cons_prod(x0, cons_zero(z0)))) ENCARG(cons_active(cons_prod(x0, cons_s(z0)))) -> c3(ACTIVE(prod(encArg(x0), s(encArg(z0)))), ENCARG(cons_prod(x0, cons_s(z0)))) ENCARG(cons_active(cons_prod(x0, cons_prod(z0, z1)))) -> c3(ACTIVE(prod(encArg(x0), prod(encArg(z0), encArg(z1)))), ENCARG(cons_prod(x0, cons_prod(z0, z1)))) ENCARG(cons_active(cons_prod(x0, cons_p(z0)))) -> c3(ACTIVE(prod(encArg(x0), p(encArg(z0)))), ENCARG(cons_prod(x0, cons_p(z0)))) ENCARG(cons_active(cons_prod(x0, cons_add(z0, z1)))) -> c3(ACTIVE(prod(encArg(x0), add(encArg(z0), encArg(z1)))), ENCARG(cons_prod(x0, cons_add(z0, z1)))) ENCARG(cons_active(cons_prod(0, x1))) -> c3(ACTIVE(prod(0, encArg(x1))), ENCARG(cons_prod(0, x1))) ENCARG(cons_active(cons_prod(true, x1))) -> c3(ACTIVE(prod(true, encArg(x1))), ENCARG(cons_prod(true, x1))) ENCARG(cons_active(cons_prod(false, x1))) -> c3(ACTIVE(prod(false, encArg(x1))), ENCARG(cons_prod(false, x1))) ENCARG(cons_active(cons_prod(cons_active(z0), x1))) -> c3(ACTIVE(prod(active(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_active(z0), x1))) ENCARG(cons_active(cons_prod(cons_mark(z0), x1))) -> c3(ACTIVE(prod(mark(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_mark(z0), x1))) ENCARG(cons_active(cons_prod(cons_fact(z0), x1))) -> c3(ACTIVE(prod(fact(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_fact(z0), x1))) ENCARG(cons_active(cons_prod(cons_if(z0, z1, z2), x1))) -> c3(ACTIVE(prod(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))), ENCARG(cons_prod(cons_if(z0, z1, z2), x1))) ENCARG(cons_active(cons_prod(cons_zero(z0), x1))) -> c3(ACTIVE(prod(zero(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_zero(z0), x1))) ENCARG(cons_active(cons_prod(cons_s(z0), x1))) -> c3(ACTIVE(prod(s(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_s(z0), x1))) ENCARG(cons_active(cons_prod(cons_prod(z0, z1), x1))) -> c3(ACTIVE(prod(prod(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_prod(cons_prod(z0, z1), x1))) ENCARG(cons_active(cons_prod(cons_p(z0), x1))) -> c3(ACTIVE(prod(p(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_p(z0), x1))) ENCARG(cons_active(cons_prod(cons_add(z0, z1), x1))) -> c3(ACTIVE(prod(add(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_prod(cons_add(z0, z1), x1))) ENCARG(cons_active(cons_p(cons_active(z0)))) -> c3(ACTIVE(p(active(encArg(z0)))), ENCARG(cons_p(cons_active(z0)))) ENCARG(cons_active(cons_p(cons_mark(z0)))) -> c3(ACTIVE(p(mark(encArg(z0)))), ENCARG(cons_p(cons_mark(z0)))) ENCARG(cons_active(cons_p(cons_fact(z0)))) -> c3(ACTIVE(p(fact(encArg(z0)))), ENCARG(cons_p(cons_fact(z0)))) ENCARG(cons_active(cons_p(cons_if(z0, z1, z2)))) -> c3(ACTIVE(p(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_p(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_p(cons_zero(z0)))) -> c3(ACTIVE(p(zero(encArg(z0)))), ENCARG(cons_p(cons_zero(z0)))) ENCARG(cons_active(cons_p(cons_s(z0)))) -> c3(ACTIVE(p(s(encArg(z0)))), ENCARG(cons_p(cons_s(z0)))) ENCARG(cons_active(cons_p(cons_prod(z0, z1)))) -> c3(ACTIVE(p(prod(encArg(z0), encArg(z1)))), ENCARG(cons_p(cons_prod(z0, z1)))) ENCARG(cons_active(cons_p(cons_p(z0)))) -> c3(ACTIVE(p(p(encArg(z0)))), ENCARG(cons_p(cons_p(z0)))) ENCARG(cons_active(cons_p(cons_add(z0, z1)))) -> c3(ACTIVE(p(add(encArg(z0), encArg(z1)))), ENCARG(cons_p(cons_add(z0, z1)))) ENCARG(cons_active(cons_add(x0, 0))) -> c3(ACTIVE(add(encArg(x0), 0)), ENCARG(cons_add(x0, 0))) ENCARG(cons_active(cons_add(x0, true))) -> c3(ACTIVE(add(encArg(x0), true)), ENCARG(cons_add(x0, true))) ENCARG(cons_active(cons_add(x0, false))) -> c3(ACTIVE(add(encArg(x0), false)), ENCARG(cons_add(x0, false))) ENCARG(cons_active(cons_add(x0, cons_active(z0)))) -> c3(ACTIVE(add(encArg(x0), active(encArg(z0)))), ENCARG(cons_add(x0, cons_active(z0)))) ENCARG(cons_active(cons_add(x0, cons_mark(z0)))) -> c3(ACTIVE(add(encArg(x0), mark(encArg(z0)))), ENCARG(cons_add(x0, cons_mark(z0)))) ENCARG(cons_active(cons_add(x0, cons_fact(z0)))) -> c3(ACTIVE(add(encArg(x0), fact(encArg(z0)))), ENCARG(cons_add(x0, cons_fact(z0)))) ENCARG(cons_active(cons_add(x0, cons_if(z0, z1, z2)))) -> c3(ACTIVE(add(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_add(x0, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_add(x0, cons_zero(z0)))) -> c3(ACTIVE(add(encArg(x0), zero(encArg(z0)))), ENCARG(cons_add(x0, cons_zero(z0)))) ENCARG(cons_active(cons_add(x0, cons_s(z0)))) -> c3(ACTIVE(add(encArg(x0), s(encArg(z0)))), ENCARG(cons_add(x0, cons_s(z0)))) ENCARG(cons_active(cons_add(x0, cons_prod(z0, z1)))) -> c3(ACTIVE(add(encArg(x0), prod(encArg(z0), encArg(z1)))), ENCARG(cons_add(x0, cons_prod(z0, z1)))) ENCARG(cons_active(cons_add(x0, cons_p(z0)))) -> c3(ACTIVE(add(encArg(x0), p(encArg(z0)))), ENCARG(cons_add(x0, cons_p(z0)))) ENCARG(cons_active(cons_add(x0, cons_add(z0, z1)))) -> c3(ACTIVE(add(encArg(x0), add(encArg(z0), encArg(z1)))), ENCARG(cons_add(x0, cons_add(z0, z1)))) ENCARG(cons_active(cons_add(0, x1))) -> c3(ACTIVE(add(0, encArg(x1))), ENCARG(cons_add(0, x1))) ENCARG(cons_active(cons_add(true, x1))) -> c3(ACTIVE(add(true, encArg(x1))), ENCARG(cons_add(true, x1))) ENCARG(cons_active(cons_add(false, x1))) -> c3(ACTIVE(add(false, encArg(x1))), ENCARG(cons_add(false, x1))) ENCARG(cons_active(cons_add(cons_active(z0), x1))) -> c3(ACTIVE(add(active(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_active(z0), x1))) ENCARG(cons_active(cons_add(cons_mark(z0), x1))) -> c3(ACTIVE(add(mark(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_mark(z0), x1))) ENCARG(cons_active(cons_add(cons_fact(z0), x1))) -> c3(ACTIVE(add(fact(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_fact(z0), x1))) ENCARG(cons_active(cons_add(cons_if(z0, z1, z2), x1))) -> c3(ACTIVE(add(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))), ENCARG(cons_add(cons_if(z0, z1, z2), x1))) ENCARG(cons_active(cons_add(cons_zero(z0), x1))) -> c3(ACTIVE(add(zero(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_zero(z0), x1))) ENCARG(cons_active(cons_add(cons_s(z0), x1))) -> c3(ACTIVE(add(s(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_s(z0), x1))) ENCARG(cons_active(cons_add(cons_prod(z0, z1), x1))) -> c3(ACTIVE(add(prod(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_add(cons_prod(z0, z1), x1))) ENCARG(cons_active(cons_add(cons_p(z0), x1))) -> c3(ACTIVE(add(p(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_p(z0), x1))) ENCARG(cons_active(cons_add(cons_add(z0, z1), x1))) -> c3(ACTIVE(add(add(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_add(cons_add(z0, z1), x1))) ENCARG(cons_mark(cons_active(cons_active(z0)))) -> c4(MARK(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_mark(cons_active(cons_mark(z0)))) -> c4(MARK(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_mark(cons_active(cons_fact(z0)))) -> c4(MARK(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_mark(cons_active(cons_if(z0, z1, z2)))) -> c4(MARK(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_mark(cons_active(cons_zero(z0)))) -> c4(MARK(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_mark(cons_active(cons_s(z0)))) -> c4(MARK(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_mark(cons_active(cons_prod(z0, z1)))) -> c4(MARK(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_mark(cons_active(cons_p(z0)))) -> c4(MARK(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_mark(cons_active(cons_add(z0, z1)))) -> c4(MARK(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) ENCARG(cons_mark(cons_mark(cons_active(z0)))) -> c4(MARK(mark(active(encArg(z0)))), ENCARG(cons_mark(cons_active(z0)))) ENCARG(cons_mark(cons_mark(cons_mark(z0)))) -> c4(MARK(mark(mark(encArg(z0)))), ENCARG(cons_mark(cons_mark(z0)))) ENCARG(cons_mark(cons_mark(cons_fact(z0)))) -> c4(MARK(mark(fact(encArg(z0)))), ENCARG(cons_mark(cons_fact(z0)))) ENCARG(cons_mark(cons_mark(cons_if(z0, z1, z2)))) -> c4(MARK(mark(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_mark(cons_if(z0, z1, z2)))) ENCARG(cons_mark(cons_mark(cons_zero(z0)))) -> c4(MARK(mark(zero(encArg(z0)))), ENCARG(cons_mark(cons_zero(z0)))) ENCARG(cons_mark(cons_mark(cons_s(z0)))) -> c4(MARK(mark(s(encArg(z0)))), ENCARG(cons_mark(cons_s(z0)))) ENCARG(cons_mark(cons_mark(cons_prod(z0, z1)))) -> c4(MARK(mark(prod(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_prod(z0, z1)))) ENCARG(cons_mark(cons_mark(cons_p(z0)))) -> c4(MARK(mark(p(encArg(z0)))), ENCARG(cons_mark(cons_p(z0)))) ENCARG(cons_mark(cons_mark(cons_add(z0, z1)))) -> c4(MARK(mark(add(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_add(z0, z1)))) ENCARG(cons_mark(cons_mark(0))) -> c2(MARK(mark(0))) ENCARG(cons_mark(cons_mark(0))) -> c2(ENCARG(cons_mark(0))) ENCARG(cons_mark(cons_mark(true))) -> c2(MARK(mark(true))) ENCARG(cons_mark(cons_mark(true))) -> c2(ENCARG(cons_mark(true))) ENCARG(cons_mark(cons_mark(false))) -> c2(MARK(mark(false))) ENCARG(cons_mark(cons_mark(false))) -> c2(ENCARG(cons_mark(false))) ENCARG(cons_fact(cons_fact(0))) -> c5(FACT(fact(0)), ENCARG(cons_fact(0))) ENCARG(cons_fact(cons_fact(true))) -> c5(FACT(fact(true)), ENCARG(cons_fact(true))) ENCARG(cons_fact(cons_fact(false))) -> c5(FACT(fact(false)), ENCARG(cons_fact(false))) ENCARG(cons_fact(cons_fact(cons_active(z0)))) -> c5(FACT(fact(active(encArg(z0)))), ENCARG(cons_fact(cons_active(z0)))) ENCARG(cons_fact(cons_fact(cons_mark(z0)))) -> c5(FACT(fact(mark(encArg(z0)))), ENCARG(cons_fact(cons_mark(z0)))) ENCARG(cons_fact(cons_fact(cons_fact(z0)))) -> c5(FACT(fact(fact(encArg(z0)))), ENCARG(cons_fact(cons_fact(z0)))) ENCARG(cons_fact(cons_fact(cons_if(z0, z1, z2)))) -> c5(FACT(fact(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_fact(cons_if(z0, z1, z2)))) ENCARG(cons_fact(cons_fact(cons_zero(z0)))) -> c5(FACT(fact(zero(encArg(z0)))), ENCARG(cons_fact(cons_zero(z0)))) ENCARG(cons_fact(cons_fact(cons_s(z0)))) -> c5(FACT(fact(s(encArg(z0)))), ENCARG(cons_fact(cons_s(z0)))) ENCARG(cons_fact(cons_fact(cons_prod(z0, z1)))) -> c5(FACT(fact(prod(encArg(z0), encArg(z1)))), ENCARG(cons_fact(cons_prod(z0, z1)))) ENCARG(cons_fact(cons_fact(cons_p(z0)))) -> c5(FACT(fact(p(encArg(z0)))), ENCARG(cons_fact(cons_p(z0)))) ENCARG(cons_fact(cons_fact(cons_add(z0, z1)))) -> c5(FACT(fact(add(encArg(z0), encArg(z1)))), ENCARG(cons_fact(cons_add(z0, z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4, c_1, c1_1, c3_1, c2_1 ---------------------------------------- (167) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing nodes: ENCARG(cons_fact(cons_fact(true))) -> c5(FACT(fact(true)), ENCARG(cons_fact(true))) ENCARG(cons_fact(cons_fact(0))) -> c5(FACT(fact(0)), ENCARG(cons_fact(0))) ENCARG(cons_fact(cons_fact(false))) -> c5(FACT(fact(false)), ENCARG(cons_fact(false))) ---------------------------------------- (168) Obligation: Complexity Dependency Tuples Problem Rules: encArg(0) -> 0 encArg(true) -> true encArg(false) -> false encArg(cons_active(z0)) -> active(encArg(z0)) encArg(cons_mark(z0)) -> mark(encArg(z0)) encArg(cons_fact(z0)) -> fact(encArg(z0)) encArg(cons_if(z0, z1, z2)) -> if(encArg(z0), encArg(z1), encArg(z2)) encArg(cons_zero(z0)) -> zero(encArg(z0)) encArg(cons_s(z0)) -> s(encArg(z0)) encArg(cons_prod(z0, z1)) -> prod(encArg(z0), encArg(z1)) encArg(cons_p(z0)) -> p(encArg(z0)) encArg(cons_add(z0, z1)) -> add(encArg(z0), encArg(z1)) active(fact(z0)) -> mark(if(zero(z0), s(0), prod(z0, fact(p(z0))))) active(add(0, z0)) -> mark(z0) active(add(s(z0), z1)) -> mark(s(add(z0, z1))) active(prod(0, z0)) -> mark(0) active(prod(s(z0), z1)) -> mark(add(z1, prod(z0, z1))) active(if(true, z0, z1)) -> mark(z0) active(if(false, z0, z1)) -> mark(z1) active(zero(0)) -> mark(true) active(zero(s(z0))) -> mark(false) active(p(s(z0))) -> mark(z0) mark(fact(z0)) -> active(fact(mark(z0))) mark(if(z0, z1, z2)) -> active(if(mark(z0), z1, z2)) mark(zero(z0)) -> active(zero(mark(z0))) mark(s(z0)) -> active(s(mark(z0))) mark(0) -> active(0) mark(prod(z0, z1)) -> active(prod(mark(z0), mark(z1))) mark(p(z0)) -> active(p(mark(z0))) mark(add(z0, z1)) -> active(add(mark(z0), mark(z1))) mark(true) -> active(true) mark(false) -> active(false) fact(mark(z0)) -> fact(z0) fact(active(z0)) -> fact(z0) if(mark(z0), z1, z2) -> if(z0, z1, z2) if(z0, mark(z1), z2) -> if(z0, z1, z2) if(z0, z1, mark(z2)) -> if(z0, z1, z2) if(active(z0), z1, z2) -> if(z0, z1, z2) if(z0, active(z1), z2) -> if(z0, z1, z2) if(z0, z1, active(z2)) -> if(z0, z1, z2) zero(mark(z0)) -> zero(z0) zero(active(z0)) -> zero(z0) s(mark(z0)) -> s(z0) s(active(z0)) -> s(z0) prod(mark(z0), z1) -> prod(z0, z1) prod(z0, mark(z1)) -> prod(z0, z1) prod(active(z0), z1) -> prod(z0, z1) prod(z0, active(z1)) -> prod(z0, z1) p(mark(z0)) -> p(z0) p(active(z0)) -> p(z0) add(mark(z0), z1) -> add(z0, z1) add(z0, mark(z1)) -> add(z0, z1) add(active(z0), z1) -> add(z0, z1) add(z0, active(z1)) -> add(z0, z1) Tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 ENCARG(cons_active(cons_fact(z0))) -> c3(ACTIVE(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_fact(z0))) -> c4(MARK(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_mark(cons_if(z0, z1, z2))) -> c4(MARK(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_mark(cons_zero(z0))) -> c4(MARK(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_mark(cons_s(z0))) -> c4(MARK(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_mark(cons_prod(z0, z1))) -> c4(MARK(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_mark(cons_p(z0))) -> c4(MARK(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_mark(cons_add(z0, z1))) -> c4(MARK(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_mark(0)) -> c4(MARK(0)) ENCARG(cons_mark(true)) -> c4(MARK(true)) ENCARG(cons_mark(false)) -> c4(MARK(false)) ENCARG(cons_fact(cons_active(z0))) -> c5(FACT(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_fact(cons_mark(z0))) -> c5(FACT(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_fact(cons_if(z0, z1, z2))) -> c5(FACT(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_fact(cons_zero(z0))) -> c5(FACT(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_fact(cons_s(z0))) -> c5(FACT(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_fact(cons_prod(z0, z1))) -> c5(FACT(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_fact(cons_p(z0))) -> c5(FACT(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_fact(cons_add(z0, z1))) -> c5(FACT(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, x1, cons_active(z0))) -> c6(IF(encArg(x0), encArg(x1), active(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_active(z0))) ENCARG(cons_if(x0, x1, cons_mark(z0))) -> c6(IF(encArg(x0), encArg(x1), mark(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_mark(z0))) ENCARG(cons_if(x0, x1, cons_fact(z0))) -> c6(IF(encArg(x0), encArg(x1), fact(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_fact(z0))) ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2))) -> c6(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(x1), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_if(x0, x1, cons_zero(z0))) -> c6(IF(encArg(x0), encArg(x1), zero(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_zero(z0))) ENCARG(cons_if(x0, x1, cons_s(z0))) -> c6(IF(encArg(x0), encArg(x1), s(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_s(z0))) ENCARG(cons_if(x0, x1, cons_prod(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_prod(z0, z1))) ENCARG(cons_if(x0, x1, cons_p(z0))) -> c6(IF(encArg(x0), encArg(x1), p(encArg(z0))), ENCARG(x0), ENCARG(x1), ENCARG(cons_p(z0))) ENCARG(cons_if(x0, x1, cons_add(z0, z1))) -> c6(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(x1), ENCARG(cons_add(z0, z1))) ENCARG(cons_if(x0, cons_active(z0), x2)) -> c6(IF(encArg(x0), active(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_active(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_mark(z0), x2)) -> c6(IF(encArg(x0), mark(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_mark(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_fact(z0), x2)) -> c6(IF(encArg(x0), fact(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_fact(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2)) -> c6(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2)), ENCARG(x0), ENCARG(cons_if(z0, z1, z2)), ENCARG(x2)) ENCARG(cons_if(x0, cons_zero(z0), x2)) -> c6(IF(encArg(x0), zero(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_zero(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_s(z0), x2)) -> c6(IF(encArg(x0), s(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_s(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_prod(z0, z1), x2)) -> c6(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_prod(z0, z1)), ENCARG(x2)) ENCARG(cons_if(x0, cons_p(z0), x2)) -> c6(IF(encArg(x0), p(encArg(z0)), encArg(x2)), ENCARG(x0), ENCARG(cons_p(z0)), ENCARG(x2)) ENCARG(cons_if(x0, cons_add(z0, z1), x2)) -> c6(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2)), ENCARG(x0), ENCARG(cons_add(z0, z1)), ENCARG(x2)) ENCARG(cons_if(cons_active(z0), x1, x2)) -> c6(IF(active(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_active(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_mark(z0), x1, x2)) -> c6(IF(mark(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_mark(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_fact(z0), x1, x2)) -> c6(IF(fact(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_fact(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2)) -> c6(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_zero(z0), x1, x2)) -> c6(IF(zero(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_zero(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_s(z0), x1, x2)) -> c6(IF(s(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_s(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_prod(z0, z1), x1, x2)) -> c6(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_prod(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_p(z0), x1, x2)) -> c6(IF(p(encArg(z0)), encArg(x1), encArg(x2)), ENCARG(cons_p(z0)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(cons_add(z0, z1), x1, x2)) -> c6(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2)), ENCARG(cons_add(z0, z1)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(x0, x1, 0)) -> c6(IF(encArg(x0), encArg(x1), 0), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, true)) -> c6(IF(encArg(x0), encArg(x1), true), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, x1, false)) -> c6(IF(encArg(x0), encArg(x1), false), ENCARG(x0), ENCARG(x1)) ENCARG(cons_if(x0, 0, x2)) -> c6(IF(encArg(x0), 0, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, true, x2)) -> c6(IF(encArg(x0), true, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(x0, false, x2)) -> c6(IF(encArg(x0), false, encArg(x2)), ENCARG(x0), ENCARG(x2)) ENCARG(cons_if(0, x1, x2)) -> c6(IF(0, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(true, x1, x2)) -> c6(IF(true, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_if(false, x1, x2)) -> c6(IF(false, encArg(x1), encArg(x2)), ENCARG(x1), ENCARG(x2)) ENCARG(cons_zero(cons_active(z0))) -> c7(ZERO(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_zero(cons_mark(z0))) -> c7(ZERO(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_zero(cons_fact(z0))) -> c7(ZERO(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_zero(cons_if(z0, z1, z2))) -> c7(ZERO(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_zero(cons_zero(z0))) -> c7(ZERO(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_zero(cons_s(z0))) -> c7(ZERO(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_zero(cons_prod(z0, z1))) -> c7(ZERO(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_zero(cons_p(z0))) -> c7(ZERO(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_zero(cons_add(z0, z1))) -> c7(ZERO(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_s(cons_active(z0))) -> c8(S(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_s(cons_mark(z0))) -> c8(S(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_s(cons_fact(z0))) -> c8(S(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_s(cons_if(z0, z1, z2))) -> c8(S(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_s(cons_zero(z0))) -> c8(S(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_s(cons_s(z0))) -> c8(S(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_s(cons_prod(z0, z1))) -> c8(S(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_s(cons_p(z0))) -> c8(S(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_s(cons_add(z0, z1))) -> c8(S(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(x0, cons_active(z0))) -> c9(PROD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_prod(x0, cons_mark(z0))) -> c9(PROD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_prod(x0, cons_fact(z0))) -> c9(PROD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_prod(x0, cons_if(z0, z1, z2))) -> c9(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_prod(x0, cons_zero(z0))) -> c9(PROD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_prod(x0, cons_s(z0))) -> c9(PROD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_prod(x0, cons_prod(z0, z1))) -> c9(PROD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_prod(x0, cons_p(z0))) -> c9(PROD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_prod(x0, cons_add(z0, z1))) -> c9(PROD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_prod(cons_active(z0), x1)) -> c9(PROD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_mark(z0), x1)) -> c9(PROD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_fact(z0), x1)) -> c9(PROD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_if(z0, z1, z2), x1)) -> c9(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_prod(cons_zero(z0), x1)) -> c9(PROD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_s(z0), x1)) -> c9(PROD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_prod(z0, z1), x1)) -> c9(PROD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(cons_p(z0), x1)) -> c9(PROD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_prod(cons_add(z0, z1), x1)) -> c9(PROD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_prod(x0, 0)) -> c9(PROD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_prod(x0, true)) -> c9(PROD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_prod(x0, false)) -> c9(PROD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_prod(0, x1)) -> c9(PROD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(true, x1)) -> c9(PROD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_prod(false, x1)) -> c9(PROD(false, encArg(x1)), ENCARG(x1)) ENCARG(cons_p(cons_active(z0))) -> c10(P(active(encArg(z0))), ENCARG(cons_active(z0))) ENCARG(cons_p(cons_mark(z0))) -> c10(P(mark(encArg(z0))), ENCARG(cons_mark(z0))) ENCARG(cons_p(cons_fact(z0))) -> c10(P(fact(encArg(z0))), ENCARG(cons_fact(z0))) ENCARG(cons_p(cons_if(z0, z1, z2))) -> c10(P(if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_p(cons_zero(z0))) -> c10(P(zero(encArg(z0))), ENCARG(cons_zero(z0))) ENCARG(cons_p(cons_s(z0))) -> c10(P(s(encArg(z0))), ENCARG(cons_s(z0))) ENCARG(cons_p(cons_prod(z0, z1))) -> c10(P(prod(encArg(z0), encArg(z1))), ENCARG(cons_prod(z0, z1))) ENCARG(cons_p(cons_p(z0))) -> c10(P(p(encArg(z0))), ENCARG(cons_p(z0))) ENCARG(cons_p(cons_add(z0, z1))) -> c10(P(add(encArg(z0), encArg(z1))), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(x0, cons_active(z0))) -> c11(ADD(encArg(x0), active(encArg(z0))), ENCARG(x0), ENCARG(cons_active(z0))) ENCARG(cons_add(x0, cons_mark(z0))) -> c11(ADD(encArg(x0), mark(encArg(z0))), ENCARG(x0), ENCARG(cons_mark(z0))) ENCARG(cons_add(x0, cons_fact(z0))) -> c11(ADD(encArg(x0), fact(encArg(z0))), ENCARG(x0), ENCARG(cons_fact(z0))) ENCARG(cons_add(x0, cons_if(z0, z1, z2))) -> c11(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2))), ENCARG(x0), ENCARG(cons_if(z0, z1, z2))) ENCARG(cons_add(x0, cons_zero(z0))) -> c11(ADD(encArg(x0), zero(encArg(z0))), ENCARG(x0), ENCARG(cons_zero(z0))) ENCARG(cons_add(x0, cons_s(z0))) -> c11(ADD(encArg(x0), s(encArg(z0))), ENCARG(x0), ENCARG(cons_s(z0))) ENCARG(cons_add(x0, cons_prod(z0, z1))) -> c11(ADD(encArg(x0), prod(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_prod(z0, z1))) ENCARG(cons_add(x0, cons_p(z0))) -> c11(ADD(encArg(x0), p(encArg(z0))), ENCARG(x0), ENCARG(cons_p(z0))) ENCARG(cons_add(x0, cons_add(z0, z1))) -> c11(ADD(encArg(x0), add(encArg(z0), encArg(z1))), ENCARG(x0), ENCARG(cons_add(z0, z1))) ENCARG(cons_add(cons_active(z0), x1)) -> c11(ADD(active(encArg(z0)), encArg(x1)), ENCARG(cons_active(z0)), ENCARG(x1)) ENCARG(cons_add(cons_mark(z0), x1)) -> c11(ADD(mark(encArg(z0)), encArg(x1)), ENCARG(cons_mark(z0)), ENCARG(x1)) ENCARG(cons_add(cons_fact(z0), x1)) -> c11(ADD(fact(encArg(z0)), encArg(x1)), ENCARG(cons_fact(z0)), ENCARG(x1)) ENCARG(cons_add(cons_if(z0, z1, z2), x1)) -> c11(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1)), ENCARG(cons_if(z0, z1, z2)), ENCARG(x1)) ENCARG(cons_add(cons_zero(z0), x1)) -> c11(ADD(zero(encArg(z0)), encArg(x1)), ENCARG(cons_zero(z0)), ENCARG(x1)) ENCARG(cons_add(cons_s(z0), x1)) -> c11(ADD(s(encArg(z0)), encArg(x1)), ENCARG(cons_s(z0)), ENCARG(x1)) ENCARG(cons_add(cons_prod(z0, z1), x1)) -> c11(ADD(prod(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_prod(z0, z1)), ENCARG(x1)) ENCARG(cons_add(cons_p(z0), x1)) -> c11(ADD(p(encArg(z0)), encArg(x1)), ENCARG(cons_p(z0)), ENCARG(x1)) ENCARG(cons_add(cons_add(z0, z1), x1)) -> c11(ADD(add(encArg(z0), encArg(z1)), encArg(x1)), ENCARG(cons_add(z0, z1)), ENCARG(x1)) ENCARG(cons_add(x0, 0)) -> c11(ADD(encArg(x0), 0), ENCARG(x0)) ENCARG(cons_add(x0, true)) -> c11(ADD(encArg(x0), true), ENCARG(x0)) ENCARG(cons_add(x0, false)) -> c11(ADD(encArg(x0), false), ENCARG(x0)) ENCARG(cons_add(0, x1)) -> c11(ADD(0, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(true, x1)) -> c11(ADD(true, encArg(x1)), ENCARG(x1)) ENCARG(cons_add(false, x1)) -> c11(ADD(false, encArg(x1)), ENCARG(x1)) MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) ENCODE_ACTIVE(cons_active(z0)) -> c(ACTIVE(active(encArg(z0)))) ENCODE_ACTIVE(cons_mark(z0)) -> c(ACTIVE(mark(encArg(z0)))) ENCODE_ACTIVE(cons_fact(z0)) -> c(ACTIVE(fact(encArg(z0)))) ENCODE_ACTIVE(cons_if(z0, z1, z2)) -> c(ACTIVE(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ACTIVE(cons_zero(z0)) -> c(ACTIVE(zero(encArg(z0)))) ENCODE_ACTIVE(cons_s(z0)) -> c(ACTIVE(s(encArg(z0)))) ENCODE_ACTIVE(cons_prod(z0, z1)) -> c(ACTIVE(prod(encArg(z0), encArg(z1)))) ENCODE_ACTIVE(cons_p(z0)) -> c(ACTIVE(p(encArg(z0)))) ENCODE_ACTIVE(cons_add(z0, z1)) -> c(ACTIVE(add(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_active(z0)) -> c(FACT(active(encArg(z0)))) ENCODE_FACT(cons_mark(z0)) -> c(FACT(mark(encArg(z0)))) ENCODE_FACT(cons_fact(z0)) -> c(FACT(fact(encArg(z0)))) ENCODE_FACT(cons_if(z0, z1, z2)) -> c(FACT(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_FACT(cons_zero(z0)) -> c(FACT(zero(encArg(z0)))) ENCODE_FACT(cons_s(z0)) -> c(FACT(s(encArg(z0)))) ENCODE_FACT(cons_prod(z0, z1)) -> c(FACT(prod(encArg(z0), encArg(z1)))) ENCODE_FACT(cons_p(z0)) -> c(FACT(p(encArg(z0)))) ENCODE_FACT(cons_add(z0, z1)) -> c(FACT(add(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_active(z0)) -> c(MARK(active(encArg(z0)))) ENCODE_MARK(cons_mark(z0)) -> c(MARK(mark(encArg(z0)))) ENCODE_MARK(cons_fact(z0)) -> c(MARK(fact(encArg(z0)))) ENCODE_MARK(cons_if(z0, z1, z2)) -> c(MARK(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_MARK(cons_zero(z0)) -> c(MARK(zero(encArg(z0)))) ENCODE_MARK(cons_s(z0)) -> c(MARK(s(encArg(z0)))) ENCODE_MARK(cons_prod(z0, z1)) -> c(MARK(prod(encArg(z0), encArg(z1)))) ENCODE_MARK(cons_p(z0)) -> c(MARK(p(encArg(z0)))) ENCODE_MARK(cons_add(z0, z1)) -> c(MARK(add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, 0) -> c(IF(encArg(x0), encArg(x1), 0)) ENCODE_IF(x0, x1, true) -> c(IF(encArg(x0), encArg(x1), true)) ENCODE_IF(x0, x1, false) -> c(IF(encArg(x0), encArg(x1), false)) ENCODE_IF(x0, x1, cons_active(z0)) -> c(IF(encArg(x0), encArg(x1), active(encArg(z0)))) ENCODE_IF(x0, x1, cons_mark(z0)) -> c(IF(encArg(x0), encArg(x1), mark(encArg(z0)))) ENCODE_IF(x0, x1, cons_fact(z0)) -> c(IF(encArg(x0), encArg(x1), fact(encArg(z0)))) ENCODE_IF(x0, x1, cons_if(z0, z1, z2)) -> c(IF(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_IF(x0, x1, cons_zero(z0)) -> c(IF(encArg(x0), encArg(x1), zero(encArg(z0)))) ENCODE_IF(x0, x1, cons_s(z0)) -> c(IF(encArg(x0), encArg(x1), s(encArg(z0)))) ENCODE_IF(x0, x1, cons_prod(z0, z1)) -> c(IF(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))) ENCODE_IF(x0, x1, cons_p(z0)) -> c(IF(encArg(x0), encArg(x1), p(encArg(z0)))) ENCODE_IF(x0, x1, cons_add(z0, z1)) -> c(IF(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))) ENCODE_IF(x0, 0, x2) -> c(IF(encArg(x0), 0, encArg(x2))) ENCODE_IF(x0, true, x2) -> c(IF(encArg(x0), true, encArg(x2))) ENCODE_IF(x0, false, x2) -> c(IF(encArg(x0), false, encArg(x2))) ENCODE_IF(x0, cons_active(z0), x2) -> c(IF(encArg(x0), active(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_mark(z0), x2) -> c(IF(encArg(x0), mark(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_fact(z0), x2) -> c(IF(encArg(x0), fact(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_if(z0, z1, z2), x2) -> c(IF(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))) ENCODE_IF(x0, cons_zero(z0), x2) -> c(IF(encArg(x0), zero(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_s(z0), x2) -> c(IF(encArg(x0), s(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_prod(z0, z1), x2) -> c(IF(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(x0, cons_p(z0), x2) -> c(IF(encArg(x0), p(encArg(z0)), encArg(x2))) ENCODE_IF(x0, cons_add(z0, z1), x2) -> c(IF(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))) ENCODE_IF(0, x1, x2) -> c(IF(0, encArg(x1), encArg(x2))) ENCODE_IF(true, x1, x2) -> c(IF(true, encArg(x1), encArg(x2))) ENCODE_IF(false, x1, x2) -> c(IF(false, encArg(x1), encArg(x2))) ENCODE_IF(cons_active(z0), x1, x2) -> c(IF(active(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_mark(z0), x1, x2) -> c(IF(mark(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_fact(z0), x1, x2) -> c(IF(fact(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_if(z0, z1, z2), x1, x2) -> c(IF(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))) ENCODE_IF(cons_zero(z0), x1, x2) -> c(IF(zero(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_s(z0), x1, x2) -> c(IF(s(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_prod(z0, z1), x1, x2) -> c(IF(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_IF(cons_p(z0), x1, x2) -> c(IF(p(encArg(z0)), encArg(x1), encArg(x2))) ENCODE_IF(cons_add(z0, z1), x1, x2) -> c(IF(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))) ENCODE_ZERO(cons_active(z0)) -> c(ZERO(active(encArg(z0)))) ENCODE_ZERO(cons_mark(z0)) -> c(ZERO(mark(encArg(z0)))) ENCODE_ZERO(cons_fact(z0)) -> c(ZERO(fact(encArg(z0)))) ENCODE_ZERO(cons_if(z0, z1, z2)) -> c(ZERO(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ZERO(cons_zero(z0)) -> c(ZERO(zero(encArg(z0)))) ENCODE_ZERO(cons_s(z0)) -> c(ZERO(s(encArg(z0)))) ENCODE_ZERO(cons_prod(z0, z1)) -> c(ZERO(prod(encArg(z0), encArg(z1)))) ENCODE_ZERO(cons_p(z0)) -> c(ZERO(p(encArg(z0)))) ENCODE_ZERO(cons_add(z0, z1)) -> c(ZERO(add(encArg(z0), encArg(z1)))) ENCODE_S(cons_active(z0)) -> c(S(active(encArg(z0)))) ENCODE_S(cons_mark(z0)) -> c(S(mark(encArg(z0)))) ENCODE_S(cons_fact(z0)) -> c(S(fact(encArg(z0)))) ENCODE_S(cons_if(z0, z1, z2)) -> c(S(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_S(cons_zero(z0)) -> c(S(zero(encArg(z0)))) ENCODE_S(cons_s(z0)) -> c(S(s(encArg(z0)))) ENCODE_S(cons_prod(z0, z1)) -> c(S(prod(encArg(z0), encArg(z1)))) ENCODE_S(cons_p(z0)) -> c(S(p(encArg(z0)))) ENCODE_S(cons_add(z0, z1)) -> c(S(add(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, 0) -> c(PROD(encArg(x0), 0)) ENCODE_PROD(x0, true) -> c(PROD(encArg(x0), true)) ENCODE_PROD(x0, false) -> c(PROD(encArg(x0), false)) ENCODE_PROD(x0, cons_active(z0)) -> c(PROD(encArg(x0), active(encArg(z0)))) ENCODE_PROD(x0, cons_mark(z0)) -> c(PROD(encArg(x0), mark(encArg(z0)))) ENCODE_PROD(x0, cons_fact(z0)) -> c(PROD(encArg(x0), fact(encArg(z0)))) ENCODE_PROD(x0, cons_if(z0, z1, z2)) -> c(PROD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_PROD(x0, cons_zero(z0)) -> c(PROD(encArg(x0), zero(encArg(z0)))) ENCODE_PROD(x0, cons_s(z0)) -> c(PROD(encArg(x0), s(encArg(z0)))) ENCODE_PROD(x0, cons_prod(z0, z1)) -> c(PROD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_PROD(x0, cons_p(z0)) -> c(PROD(encArg(x0), p(encArg(z0)))) ENCODE_PROD(x0, cons_add(z0, z1)) -> c(PROD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_PROD(0, x1) -> c(PROD(0, encArg(x1))) ENCODE_PROD(true, x1) -> c(PROD(true, encArg(x1))) ENCODE_PROD(false, x1) -> c(PROD(false, encArg(x1))) ENCODE_PROD(cons_active(z0), x1) -> c(PROD(active(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_mark(z0), x1) -> c(PROD(mark(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_fact(z0), x1) -> c(PROD(fact(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_if(z0, z1, z2), x1) -> c(PROD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_PROD(cons_zero(z0), x1) -> c(PROD(zero(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_s(z0), x1) -> c(PROD(s(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_prod(z0, z1), x1) -> c(PROD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_PROD(cons_p(z0), x1) -> c(PROD(p(encArg(z0)), encArg(x1))) ENCODE_PROD(cons_add(z0, z1), x1) -> c(PROD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_P(cons_active(z0)) -> c(P(active(encArg(z0)))) ENCODE_P(cons_mark(z0)) -> c(P(mark(encArg(z0)))) ENCODE_P(cons_fact(z0)) -> c(P(fact(encArg(z0)))) ENCODE_P(cons_if(z0, z1, z2)) -> c(P(if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_P(cons_zero(z0)) -> c(P(zero(encArg(z0)))) ENCODE_P(cons_s(z0)) -> c(P(s(encArg(z0)))) ENCODE_P(cons_prod(z0, z1)) -> c(P(prod(encArg(z0), encArg(z1)))) ENCODE_P(cons_p(z0)) -> c(P(p(encArg(z0)))) ENCODE_P(cons_add(z0, z1)) -> c(P(add(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, 0) -> c(ADD(encArg(x0), 0)) ENCODE_ADD(x0, true) -> c(ADD(encArg(x0), true)) ENCODE_ADD(x0, false) -> c(ADD(encArg(x0), false)) ENCODE_ADD(x0, cons_active(z0)) -> c(ADD(encArg(x0), active(encArg(z0)))) ENCODE_ADD(x0, cons_mark(z0)) -> c(ADD(encArg(x0), mark(encArg(z0)))) ENCODE_ADD(x0, cons_fact(z0)) -> c(ADD(encArg(x0), fact(encArg(z0)))) ENCODE_ADD(x0, cons_if(z0, z1, z2)) -> c(ADD(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))) ENCODE_ADD(x0, cons_zero(z0)) -> c(ADD(encArg(x0), zero(encArg(z0)))) ENCODE_ADD(x0, cons_s(z0)) -> c(ADD(encArg(x0), s(encArg(z0)))) ENCODE_ADD(x0, cons_prod(z0, z1)) -> c(ADD(encArg(x0), prod(encArg(z0), encArg(z1)))) ENCODE_ADD(x0, cons_p(z0)) -> c(ADD(encArg(x0), p(encArg(z0)))) ENCODE_ADD(x0, cons_add(z0, z1)) -> c(ADD(encArg(x0), add(encArg(z0), encArg(z1)))) ENCODE_ADD(0, x1) -> c(ADD(0, encArg(x1))) ENCODE_ADD(true, x1) -> c(ADD(true, encArg(x1))) ENCODE_ADD(false, x1) -> c(ADD(false, encArg(x1))) ENCODE_ADD(cons_active(z0), x1) -> c(ADD(active(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_mark(z0), x1) -> c(ADD(mark(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_fact(z0), x1) -> c(ADD(fact(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_if(z0, z1, z2), x1) -> c(ADD(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))) ENCODE_ADD(cons_zero(z0), x1) -> c(ADD(zero(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_s(z0), x1) -> c(ADD(s(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_prod(z0, z1), x1) -> c(ADD(prod(encArg(z0), encArg(z1)), encArg(x1))) ENCODE_ADD(cons_p(z0), x1) -> c(ADD(p(encArg(z0)), encArg(x1))) ENCODE_ADD(cons_add(z0, z1), x1) -> c(ADD(add(encArg(z0), encArg(z1)), encArg(x1))) ENCARG(cons_active(cons_active(cons_active(z0)))) -> c3(ACTIVE(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_active(cons_active(cons_mark(z0)))) -> c3(ACTIVE(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_active(cons_active(cons_fact(z0)))) -> c3(ACTIVE(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_active(cons_active(cons_if(z0, z1, z2)))) -> c3(ACTIVE(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_active(cons_zero(z0)))) -> c3(ACTIVE(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_active(cons_active(cons_s(z0)))) -> c3(ACTIVE(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_active(cons_active(cons_prod(z0, z1)))) -> c3(ACTIVE(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_active(cons_active(cons_p(z0)))) -> c3(ACTIVE(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_active(cons_active(cons_add(z0, z1)))) -> c3(ACTIVE(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(cons_active(z0)))) -> c3(ACTIVE(mark(active(encArg(z0)))), ENCARG(cons_mark(cons_active(z0)))) ENCARG(cons_active(cons_mark(cons_mark(z0)))) -> c3(ACTIVE(mark(mark(encArg(z0)))), ENCARG(cons_mark(cons_mark(z0)))) ENCARG(cons_active(cons_mark(cons_fact(z0)))) -> c3(ACTIVE(mark(fact(encArg(z0)))), ENCARG(cons_mark(cons_fact(z0)))) ENCARG(cons_active(cons_mark(cons_if(z0, z1, z2)))) -> c3(ACTIVE(mark(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_mark(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_mark(cons_zero(z0)))) -> c3(ACTIVE(mark(zero(encArg(z0)))), ENCARG(cons_mark(cons_zero(z0)))) ENCARG(cons_active(cons_mark(cons_s(z0)))) -> c3(ACTIVE(mark(s(encArg(z0)))), ENCARG(cons_mark(cons_s(z0)))) ENCARG(cons_active(cons_mark(cons_prod(z0, z1)))) -> c3(ACTIVE(mark(prod(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_prod(z0, z1)))) ENCARG(cons_active(cons_mark(cons_p(z0)))) -> c3(ACTIVE(mark(p(encArg(z0)))), ENCARG(cons_mark(cons_p(z0)))) ENCARG(cons_active(cons_mark(cons_add(z0, z1)))) -> c3(ACTIVE(mark(add(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_add(z0, z1)))) ENCARG(cons_active(cons_mark(0))) -> c1(ACTIVE(mark(0))) ENCARG(cons_active(cons_mark(0))) -> c1(ENCARG(cons_mark(0))) ENCARG(cons_active(cons_mark(true))) -> c1(ACTIVE(mark(true))) ENCARG(cons_active(cons_mark(true))) -> c1(ENCARG(cons_mark(true))) ENCARG(cons_active(cons_mark(false))) -> c1(ACTIVE(mark(false))) ENCARG(cons_active(cons_mark(false))) -> c1(ENCARG(cons_mark(false))) ENCARG(cons_active(cons_if(x0, x1, 0))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), 0)), ENCARG(cons_if(x0, x1, 0))) ENCARG(cons_active(cons_if(x0, x1, true))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), true)), ENCARG(cons_if(x0, x1, true))) ENCARG(cons_active(cons_if(x0, x1, false))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), false)), ENCARG(cons_if(x0, x1, false))) ENCARG(cons_active(cons_if(x0, x1, cons_active(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), active(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_active(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_mark(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), mark(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_mark(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_fact(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), fact(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_fact(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_if(z0, z1, z2)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_if(x0, x1, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_if(x0, x1, cons_zero(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), zero(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_zero(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_s(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), s(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_s(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_prod(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), prod(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_prod(z0, z1)))) ENCARG(cons_active(cons_if(x0, x1, cons_p(z0)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), p(encArg(z0)))), ENCARG(cons_if(x0, x1, cons_p(z0)))) ENCARG(cons_active(cons_if(x0, x1, cons_add(z0, z1)))) -> c3(ACTIVE(if(encArg(x0), encArg(x1), add(encArg(z0), encArg(z1)))), ENCARG(cons_if(x0, x1, cons_add(z0, z1)))) ENCARG(cons_active(cons_if(x0, 0, x2))) -> c3(ACTIVE(if(encArg(x0), 0, encArg(x2))), ENCARG(cons_if(x0, 0, x2))) ENCARG(cons_active(cons_if(x0, true, x2))) -> c3(ACTIVE(if(encArg(x0), true, encArg(x2))), ENCARG(cons_if(x0, true, x2))) ENCARG(cons_active(cons_if(x0, false, x2))) -> c3(ACTIVE(if(encArg(x0), false, encArg(x2))), ENCARG(cons_if(x0, false, x2))) ENCARG(cons_active(cons_if(x0, cons_active(z0), x2))) -> c3(ACTIVE(if(encArg(x0), active(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_active(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_mark(z0), x2))) -> c3(ACTIVE(if(encArg(x0), mark(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_mark(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_fact(z0), x2))) -> c3(ACTIVE(if(encArg(x0), fact(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_fact(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_if(z0, z1, z2), x2))) -> c3(ACTIVE(if(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)), encArg(x2))), ENCARG(cons_if(x0, cons_if(z0, z1, z2), x2))) ENCARG(cons_active(cons_if(x0, cons_zero(z0), x2))) -> c3(ACTIVE(if(encArg(x0), zero(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_zero(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_s(z0), x2))) -> c3(ACTIVE(if(encArg(x0), s(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_s(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_prod(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), prod(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_prod(z0, z1), x2))) ENCARG(cons_active(cons_if(x0, cons_p(z0), x2))) -> c3(ACTIVE(if(encArg(x0), p(encArg(z0)), encArg(x2))), ENCARG(cons_if(x0, cons_p(z0), x2))) ENCARG(cons_active(cons_if(x0, cons_add(z0, z1), x2))) -> c3(ACTIVE(if(encArg(x0), add(encArg(z0), encArg(z1)), encArg(x2))), ENCARG(cons_if(x0, cons_add(z0, z1), x2))) ENCARG(cons_active(cons_if(0, x1, x2))) -> c3(ACTIVE(if(0, encArg(x1), encArg(x2))), ENCARG(cons_if(0, x1, x2))) ENCARG(cons_active(cons_if(true, x1, x2))) -> c3(ACTIVE(if(true, encArg(x1), encArg(x2))), ENCARG(cons_if(true, x1, x2))) ENCARG(cons_active(cons_if(false, x1, x2))) -> c3(ACTIVE(if(false, encArg(x1), encArg(x2))), ENCARG(cons_if(false, x1, x2))) ENCARG(cons_active(cons_if(cons_active(z0), x1, x2))) -> c3(ACTIVE(if(active(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_active(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_mark(z0), x1, x2))) -> c3(ACTIVE(if(mark(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_mark(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_fact(z0), x1, x2))) -> c3(ACTIVE(if(fact(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_fact(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_if(z0, z1, z2), x1, x2))) -> c3(ACTIVE(if(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_if(z0, z1, z2), x1, x2))) ENCARG(cons_active(cons_if(cons_zero(z0), x1, x2))) -> c3(ACTIVE(if(zero(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_zero(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_s(z0), x1, x2))) -> c3(ACTIVE(if(s(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_s(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_prod(z0, z1), x1, x2))) -> c3(ACTIVE(if(prod(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_prod(z0, z1), x1, x2))) ENCARG(cons_active(cons_if(cons_p(z0), x1, x2))) -> c3(ACTIVE(if(p(encArg(z0)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_p(z0), x1, x2))) ENCARG(cons_active(cons_if(cons_add(z0, z1), x1, x2))) -> c3(ACTIVE(if(add(encArg(z0), encArg(z1)), encArg(x1), encArg(x2))), ENCARG(cons_if(cons_add(z0, z1), x1, x2))) ENCARG(cons_active(cons_zero(cons_active(z0)))) -> c3(ACTIVE(zero(active(encArg(z0)))), ENCARG(cons_zero(cons_active(z0)))) ENCARG(cons_active(cons_zero(cons_mark(z0)))) -> c3(ACTIVE(zero(mark(encArg(z0)))), ENCARG(cons_zero(cons_mark(z0)))) ENCARG(cons_active(cons_zero(cons_fact(z0)))) -> c3(ACTIVE(zero(fact(encArg(z0)))), ENCARG(cons_zero(cons_fact(z0)))) ENCARG(cons_active(cons_zero(cons_if(z0, z1, z2)))) -> c3(ACTIVE(zero(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_zero(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_zero(cons_zero(z0)))) -> c3(ACTIVE(zero(zero(encArg(z0)))), ENCARG(cons_zero(cons_zero(z0)))) ENCARG(cons_active(cons_zero(cons_s(z0)))) -> c3(ACTIVE(zero(s(encArg(z0)))), ENCARG(cons_zero(cons_s(z0)))) ENCARG(cons_active(cons_zero(cons_prod(z0, z1)))) -> c3(ACTIVE(zero(prod(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_prod(z0, z1)))) ENCARG(cons_active(cons_zero(cons_p(z0)))) -> c3(ACTIVE(zero(p(encArg(z0)))), ENCARG(cons_zero(cons_p(z0)))) ENCARG(cons_active(cons_zero(cons_add(z0, z1)))) -> c3(ACTIVE(zero(add(encArg(z0), encArg(z1)))), ENCARG(cons_zero(cons_add(z0, z1)))) ENCARG(cons_active(cons_zero(0))) -> c3(ACTIVE(zero(0))) ENCARG(cons_active(cons_s(cons_active(z0)))) -> c3(ACTIVE(s(active(encArg(z0)))), ENCARG(cons_s(cons_active(z0)))) ENCARG(cons_active(cons_s(cons_mark(z0)))) -> c3(ACTIVE(s(mark(encArg(z0)))), ENCARG(cons_s(cons_mark(z0)))) ENCARG(cons_active(cons_s(cons_fact(z0)))) -> c3(ACTIVE(s(fact(encArg(z0)))), ENCARG(cons_s(cons_fact(z0)))) ENCARG(cons_active(cons_s(cons_if(z0, z1, z2)))) -> c3(ACTIVE(s(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_s(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_s(cons_zero(z0)))) -> c3(ACTIVE(s(zero(encArg(z0)))), ENCARG(cons_s(cons_zero(z0)))) ENCARG(cons_active(cons_s(cons_s(z0)))) -> c3(ACTIVE(s(s(encArg(z0)))), ENCARG(cons_s(cons_s(z0)))) ENCARG(cons_active(cons_s(cons_prod(z0, z1)))) -> c3(ACTIVE(s(prod(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_prod(z0, z1)))) ENCARG(cons_active(cons_s(cons_p(z0)))) -> c3(ACTIVE(s(p(encArg(z0)))), ENCARG(cons_s(cons_p(z0)))) ENCARG(cons_active(cons_s(cons_add(z0, z1)))) -> c3(ACTIVE(s(add(encArg(z0), encArg(z1)))), ENCARG(cons_s(cons_add(z0, z1)))) ENCARG(cons_active(cons_prod(x0, 0))) -> c3(ACTIVE(prod(encArg(x0), 0)), ENCARG(cons_prod(x0, 0))) ENCARG(cons_active(cons_prod(x0, true))) -> c3(ACTIVE(prod(encArg(x0), true)), ENCARG(cons_prod(x0, true))) ENCARG(cons_active(cons_prod(x0, false))) -> c3(ACTIVE(prod(encArg(x0), false)), ENCARG(cons_prod(x0, false))) ENCARG(cons_active(cons_prod(x0, cons_active(z0)))) -> c3(ACTIVE(prod(encArg(x0), active(encArg(z0)))), ENCARG(cons_prod(x0, cons_active(z0)))) ENCARG(cons_active(cons_prod(x0, cons_mark(z0)))) -> c3(ACTIVE(prod(encArg(x0), mark(encArg(z0)))), ENCARG(cons_prod(x0, cons_mark(z0)))) ENCARG(cons_active(cons_prod(x0, cons_fact(z0)))) -> c3(ACTIVE(prod(encArg(x0), fact(encArg(z0)))), ENCARG(cons_prod(x0, cons_fact(z0)))) ENCARG(cons_active(cons_prod(x0, cons_if(z0, z1, z2)))) -> c3(ACTIVE(prod(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_prod(x0, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_prod(x0, cons_zero(z0)))) -> c3(ACTIVE(prod(encArg(x0), zero(encArg(z0)))), ENCARG(cons_prod(x0, cons_zero(z0)))) ENCARG(cons_active(cons_prod(x0, cons_s(z0)))) -> c3(ACTIVE(prod(encArg(x0), s(encArg(z0)))), ENCARG(cons_prod(x0, cons_s(z0)))) ENCARG(cons_active(cons_prod(x0, cons_prod(z0, z1)))) -> c3(ACTIVE(prod(encArg(x0), prod(encArg(z0), encArg(z1)))), ENCARG(cons_prod(x0, cons_prod(z0, z1)))) ENCARG(cons_active(cons_prod(x0, cons_p(z0)))) -> c3(ACTIVE(prod(encArg(x0), p(encArg(z0)))), ENCARG(cons_prod(x0, cons_p(z0)))) ENCARG(cons_active(cons_prod(x0, cons_add(z0, z1)))) -> c3(ACTIVE(prod(encArg(x0), add(encArg(z0), encArg(z1)))), ENCARG(cons_prod(x0, cons_add(z0, z1)))) ENCARG(cons_active(cons_prod(0, x1))) -> c3(ACTIVE(prod(0, encArg(x1))), ENCARG(cons_prod(0, x1))) ENCARG(cons_active(cons_prod(true, x1))) -> c3(ACTIVE(prod(true, encArg(x1))), ENCARG(cons_prod(true, x1))) ENCARG(cons_active(cons_prod(false, x1))) -> c3(ACTIVE(prod(false, encArg(x1))), ENCARG(cons_prod(false, x1))) ENCARG(cons_active(cons_prod(cons_active(z0), x1))) -> c3(ACTIVE(prod(active(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_active(z0), x1))) ENCARG(cons_active(cons_prod(cons_mark(z0), x1))) -> c3(ACTIVE(prod(mark(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_mark(z0), x1))) ENCARG(cons_active(cons_prod(cons_fact(z0), x1))) -> c3(ACTIVE(prod(fact(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_fact(z0), x1))) ENCARG(cons_active(cons_prod(cons_if(z0, z1, z2), x1))) -> c3(ACTIVE(prod(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))), ENCARG(cons_prod(cons_if(z0, z1, z2), x1))) ENCARG(cons_active(cons_prod(cons_zero(z0), x1))) -> c3(ACTIVE(prod(zero(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_zero(z0), x1))) ENCARG(cons_active(cons_prod(cons_s(z0), x1))) -> c3(ACTIVE(prod(s(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_s(z0), x1))) ENCARG(cons_active(cons_prod(cons_prod(z0, z1), x1))) -> c3(ACTIVE(prod(prod(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_prod(cons_prod(z0, z1), x1))) ENCARG(cons_active(cons_prod(cons_p(z0), x1))) -> c3(ACTIVE(prod(p(encArg(z0)), encArg(x1))), ENCARG(cons_prod(cons_p(z0), x1))) ENCARG(cons_active(cons_prod(cons_add(z0, z1), x1))) -> c3(ACTIVE(prod(add(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_prod(cons_add(z0, z1), x1))) ENCARG(cons_active(cons_p(cons_active(z0)))) -> c3(ACTIVE(p(active(encArg(z0)))), ENCARG(cons_p(cons_active(z0)))) ENCARG(cons_active(cons_p(cons_mark(z0)))) -> c3(ACTIVE(p(mark(encArg(z0)))), ENCARG(cons_p(cons_mark(z0)))) ENCARG(cons_active(cons_p(cons_fact(z0)))) -> c3(ACTIVE(p(fact(encArg(z0)))), ENCARG(cons_p(cons_fact(z0)))) ENCARG(cons_active(cons_p(cons_if(z0, z1, z2)))) -> c3(ACTIVE(p(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_p(cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_p(cons_zero(z0)))) -> c3(ACTIVE(p(zero(encArg(z0)))), ENCARG(cons_p(cons_zero(z0)))) ENCARG(cons_active(cons_p(cons_s(z0)))) -> c3(ACTIVE(p(s(encArg(z0)))), ENCARG(cons_p(cons_s(z0)))) ENCARG(cons_active(cons_p(cons_prod(z0, z1)))) -> c3(ACTIVE(p(prod(encArg(z0), encArg(z1)))), ENCARG(cons_p(cons_prod(z0, z1)))) ENCARG(cons_active(cons_p(cons_p(z0)))) -> c3(ACTIVE(p(p(encArg(z0)))), ENCARG(cons_p(cons_p(z0)))) ENCARG(cons_active(cons_p(cons_add(z0, z1)))) -> c3(ACTIVE(p(add(encArg(z0), encArg(z1)))), ENCARG(cons_p(cons_add(z0, z1)))) ENCARG(cons_active(cons_add(x0, 0))) -> c3(ACTIVE(add(encArg(x0), 0)), ENCARG(cons_add(x0, 0))) ENCARG(cons_active(cons_add(x0, true))) -> c3(ACTIVE(add(encArg(x0), true)), ENCARG(cons_add(x0, true))) ENCARG(cons_active(cons_add(x0, false))) -> c3(ACTIVE(add(encArg(x0), false)), ENCARG(cons_add(x0, false))) ENCARG(cons_active(cons_add(x0, cons_active(z0)))) -> c3(ACTIVE(add(encArg(x0), active(encArg(z0)))), ENCARG(cons_add(x0, cons_active(z0)))) ENCARG(cons_active(cons_add(x0, cons_mark(z0)))) -> c3(ACTIVE(add(encArg(x0), mark(encArg(z0)))), ENCARG(cons_add(x0, cons_mark(z0)))) ENCARG(cons_active(cons_add(x0, cons_fact(z0)))) -> c3(ACTIVE(add(encArg(x0), fact(encArg(z0)))), ENCARG(cons_add(x0, cons_fact(z0)))) ENCARG(cons_active(cons_add(x0, cons_if(z0, z1, z2)))) -> c3(ACTIVE(add(encArg(x0), if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_add(x0, cons_if(z0, z1, z2)))) ENCARG(cons_active(cons_add(x0, cons_zero(z0)))) -> c3(ACTIVE(add(encArg(x0), zero(encArg(z0)))), ENCARG(cons_add(x0, cons_zero(z0)))) ENCARG(cons_active(cons_add(x0, cons_s(z0)))) -> c3(ACTIVE(add(encArg(x0), s(encArg(z0)))), ENCARG(cons_add(x0, cons_s(z0)))) ENCARG(cons_active(cons_add(x0, cons_prod(z0, z1)))) -> c3(ACTIVE(add(encArg(x0), prod(encArg(z0), encArg(z1)))), ENCARG(cons_add(x0, cons_prod(z0, z1)))) ENCARG(cons_active(cons_add(x0, cons_p(z0)))) -> c3(ACTIVE(add(encArg(x0), p(encArg(z0)))), ENCARG(cons_add(x0, cons_p(z0)))) ENCARG(cons_active(cons_add(x0, cons_add(z0, z1)))) -> c3(ACTIVE(add(encArg(x0), add(encArg(z0), encArg(z1)))), ENCARG(cons_add(x0, cons_add(z0, z1)))) ENCARG(cons_active(cons_add(0, x1))) -> c3(ACTIVE(add(0, encArg(x1))), ENCARG(cons_add(0, x1))) ENCARG(cons_active(cons_add(true, x1))) -> c3(ACTIVE(add(true, encArg(x1))), ENCARG(cons_add(true, x1))) ENCARG(cons_active(cons_add(false, x1))) -> c3(ACTIVE(add(false, encArg(x1))), ENCARG(cons_add(false, x1))) ENCARG(cons_active(cons_add(cons_active(z0), x1))) -> c3(ACTIVE(add(active(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_active(z0), x1))) ENCARG(cons_active(cons_add(cons_mark(z0), x1))) -> c3(ACTIVE(add(mark(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_mark(z0), x1))) ENCARG(cons_active(cons_add(cons_fact(z0), x1))) -> c3(ACTIVE(add(fact(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_fact(z0), x1))) ENCARG(cons_active(cons_add(cons_if(z0, z1, z2), x1))) -> c3(ACTIVE(add(if(encArg(z0), encArg(z1), encArg(z2)), encArg(x1))), ENCARG(cons_add(cons_if(z0, z1, z2), x1))) ENCARG(cons_active(cons_add(cons_zero(z0), x1))) -> c3(ACTIVE(add(zero(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_zero(z0), x1))) ENCARG(cons_active(cons_add(cons_s(z0), x1))) -> c3(ACTIVE(add(s(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_s(z0), x1))) ENCARG(cons_active(cons_add(cons_prod(z0, z1), x1))) -> c3(ACTIVE(add(prod(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_add(cons_prod(z0, z1), x1))) ENCARG(cons_active(cons_add(cons_p(z0), x1))) -> c3(ACTIVE(add(p(encArg(z0)), encArg(x1))), ENCARG(cons_add(cons_p(z0), x1))) ENCARG(cons_active(cons_add(cons_add(z0, z1), x1))) -> c3(ACTIVE(add(add(encArg(z0), encArg(z1)), encArg(x1))), ENCARG(cons_add(cons_add(z0, z1), x1))) ENCARG(cons_mark(cons_active(cons_active(z0)))) -> c4(MARK(active(active(encArg(z0)))), ENCARG(cons_active(cons_active(z0)))) ENCARG(cons_mark(cons_active(cons_mark(z0)))) -> c4(MARK(active(mark(encArg(z0)))), ENCARG(cons_active(cons_mark(z0)))) ENCARG(cons_mark(cons_active(cons_fact(z0)))) -> c4(MARK(active(fact(encArg(z0)))), ENCARG(cons_active(cons_fact(z0)))) ENCARG(cons_mark(cons_active(cons_if(z0, z1, z2)))) -> c4(MARK(active(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_active(cons_if(z0, z1, z2)))) ENCARG(cons_mark(cons_active(cons_zero(z0)))) -> c4(MARK(active(zero(encArg(z0)))), ENCARG(cons_active(cons_zero(z0)))) ENCARG(cons_mark(cons_active(cons_s(z0)))) -> c4(MARK(active(s(encArg(z0)))), ENCARG(cons_active(cons_s(z0)))) ENCARG(cons_mark(cons_active(cons_prod(z0, z1)))) -> c4(MARK(active(prod(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_prod(z0, z1)))) ENCARG(cons_mark(cons_active(cons_p(z0)))) -> c4(MARK(active(p(encArg(z0)))), ENCARG(cons_active(cons_p(z0)))) ENCARG(cons_mark(cons_active(cons_add(z0, z1)))) -> c4(MARK(active(add(encArg(z0), encArg(z1)))), ENCARG(cons_active(cons_add(z0, z1)))) ENCARG(cons_mark(cons_mark(cons_active(z0)))) -> c4(MARK(mark(active(encArg(z0)))), ENCARG(cons_mark(cons_active(z0)))) ENCARG(cons_mark(cons_mark(cons_mark(z0)))) -> c4(MARK(mark(mark(encArg(z0)))), ENCARG(cons_mark(cons_mark(z0)))) ENCARG(cons_mark(cons_mark(cons_fact(z0)))) -> c4(MARK(mark(fact(encArg(z0)))), ENCARG(cons_mark(cons_fact(z0)))) ENCARG(cons_mark(cons_mark(cons_if(z0, z1, z2)))) -> c4(MARK(mark(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_mark(cons_if(z0, z1, z2)))) ENCARG(cons_mark(cons_mark(cons_zero(z0)))) -> c4(MARK(mark(zero(encArg(z0)))), ENCARG(cons_mark(cons_zero(z0)))) ENCARG(cons_mark(cons_mark(cons_s(z0)))) -> c4(MARK(mark(s(encArg(z0)))), ENCARG(cons_mark(cons_s(z0)))) ENCARG(cons_mark(cons_mark(cons_prod(z0, z1)))) -> c4(MARK(mark(prod(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_prod(z0, z1)))) ENCARG(cons_mark(cons_mark(cons_p(z0)))) -> c4(MARK(mark(p(encArg(z0)))), ENCARG(cons_mark(cons_p(z0)))) ENCARG(cons_mark(cons_mark(cons_add(z0, z1)))) -> c4(MARK(mark(add(encArg(z0), encArg(z1)))), ENCARG(cons_mark(cons_add(z0, z1)))) ENCARG(cons_mark(cons_mark(0))) -> c2(MARK(mark(0))) ENCARG(cons_mark(cons_mark(0))) -> c2(ENCARG(cons_mark(0))) ENCARG(cons_mark(cons_mark(true))) -> c2(MARK(mark(true))) ENCARG(cons_mark(cons_mark(true))) -> c2(ENCARG(cons_mark(true))) ENCARG(cons_mark(cons_mark(false))) -> c2(MARK(mark(false))) ENCARG(cons_mark(cons_mark(false))) -> c2(ENCARG(cons_mark(false))) ENCARG(cons_fact(cons_fact(cons_active(z0)))) -> c5(FACT(fact(active(encArg(z0)))), ENCARG(cons_fact(cons_active(z0)))) ENCARG(cons_fact(cons_fact(cons_mark(z0)))) -> c5(FACT(fact(mark(encArg(z0)))), ENCARG(cons_fact(cons_mark(z0)))) ENCARG(cons_fact(cons_fact(cons_fact(z0)))) -> c5(FACT(fact(fact(encArg(z0)))), ENCARG(cons_fact(cons_fact(z0)))) ENCARG(cons_fact(cons_fact(cons_if(z0, z1, z2)))) -> c5(FACT(fact(if(encArg(z0), encArg(z1), encArg(z2)))), ENCARG(cons_fact(cons_if(z0, z1, z2)))) ENCARG(cons_fact(cons_fact(cons_zero(z0)))) -> c5(FACT(fact(zero(encArg(z0)))), ENCARG(cons_fact(cons_zero(z0)))) ENCARG(cons_fact(cons_fact(cons_s(z0)))) -> c5(FACT(fact(s(encArg(z0)))), ENCARG(cons_fact(cons_s(z0)))) ENCARG(cons_fact(cons_fact(cons_prod(z0, z1)))) -> c5(FACT(fact(prod(encArg(z0), encArg(z1)))), ENCARG(cons_fact(cons_prod(z0, z1)))) ENCARG(cons_fact(cons_fact(cons_p(z0)))) -> c5(FACT(fact(p(encArg(z0)))), ENCARG(cons_fact(cons_p(z0)))) ENCARG(cons_fact(cons_fact(cons_add(z0, z1)))) -> c5(FACT(fact(add(encArg(z0), encArg(z1)))), ENCARG(cons_fact(cons_add(z0, z1)))) S tuples: ACTIVE(add(0, z0)) -> c25(MARK(z0)) ACTIVE(prod(0, z0)) -> c27(MARK(0)) ACTIVE(if(true, z0, z1)) -> c29(MARK(z0)) ACTIVE(if(false, z0, z1)) -> c30(MARK(z1)) ACTIVE(zero(0)) -> c31(MARK(true)) ACTIVE(zero(s(z0))) -> c32(MARK(false)) ACTIVE(p(s(z0))) -> c33(MARK(z0)) FACT(mark(z0)) -> c44(FACT(z0)) FACT(active(z0)) -> c45(FACT(z0)) IF(mark(z0), z1, z2) -> c46(IF(z0, z1, z2)) IF(z0, mark(z1), z2) -> c47(IF(z0, z1, z2)) IF(z0, z1, mark(z2)) -> c48(IF(z0, z1, z2)) IF(active(z0), z1, z2) -> c49(IF(z0, z1, z2)) IF(z0, active(z1), z2) -> c50(IF(z0, z1, z2)) IF(z0, z1, active(z2)) -> c51(IF(z0, z1, z2)) ZERO(mark(z0)) -> c52(ZERO(z0)) ZERO(active(z0)) -> c53(ZERO(z0)) S(mark(z0)) -> c54(S(z0)) S(active(z0)) -> c55(S(z0)) PROD(mark(z0), z1) -> c56(PROD(z0, z1)) PROD(z0, mark(z1)) -> c57(PROD(z0, z1)) PROD(active(z0), z1) -> c58(PROD(z0, z1)) PROD(z0, active(z1)) -> c59(PROD(z0, z1)) P(mark(z0)) -> c60(P(z0)) P(active(z0)) -> c61(P(z0)) ADD(mark(z0), z1) -> c62(ADD(z0, z1)) ADD(z0, mark(z1)) -> c63(ADD(z0, z1)) ADD(active(z0), z1) -> c64(ADD(z0, z1)) ADD(z0, active(z1)) -> c65(ADD(z0, z1)) ACTIVE(fact(z0)) -> c24(MARK(if(zero(z0), s(0), prod(z0, fact(p(z0))))), ZERO(z0), P(z0)) ACTIVE(add(s(z0), z1)) -> c26(MARK(s(add(z0, z1))), ADD(z0, z1)) ACTIVE(prod(s(z0), z1)) -> c28(MARK(add(z1, prod(z0, z1))), PROD(z0, z1)) MARK(0) -> c38 MARK(true) -> c42 MARK(false) -> c43 MARK(fact(z0)) -> c34(ACTIVE(fact(z0)), FACT(mark(z0)), MARK(z0)) MARK(fact(fact(z0))) -> c34(ACTIVE(fact(active(fact(mark(z0))))), FACT(mark(fact(z0))), MARK(fact(z0))) MARK(fact(if(z0, z1, z2))) -> c34(ACTIVE(fact(active(if(mark(z0), z1, z2)))), FACT(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(fact(zero(z0))) -> c34(ACTIVE(fact(active(zero(mark(z0))))), FACT(mark(zero(z0))), MARK(zero(z0))) MARK(fact(s(z0))) -> c34(ACTIVE(fact(active(s(mark(z0))))), FACT(mark(s(z0))), MARK(s(z0))) MARK(fact(0)) -> c34(ACTIVE(fact(active(0))), FACT(mark(0)), MARK(0)) MARK(fact(prod(z0, z1))) -> c34(ACTIVE(fact(active(prod(mark(z0), mark(z1))))), FACT(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(fact(p(z0))) -> c34(ACTIVE(fact(active(p(mark(z0))))), FACT(mark(p(z0))), MARK(p(z0))) MARK(fact(add(z0, z1))) -> c34(ACTIVE(fact(active(add(mark(z0), mark(z1))))), FACT(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(fact(true)) -> c34(ACTIVE(fact(active(true))), FACT(mark(true)), MARK(true)) MARK(fact(false)) -> c34(ACTIVE(fact(active(false))), FACT(mark(false)), MARK(false)) MARK(if(z0, z1, z2)) -> c35(ACTIVE(if(z0, z1, z2)), IF(mark(z0), z1, z2), MARK(z0)) MARK(if(fact(z0), x1, x2)) -> c35(ACTIVE(if(active(fact(mark(z0))), x1, x2)), IF(mark(fact(z0)), x1, x2), MARK(fact(z0))) MARK(if(if(z0, z1, z2), x1, x2)) -> c35(ACTIVE(if(active(if(mark(z0), z1, z2)), x1, x2)), IF(mark(if(z0, z1, z2)), x1, x2), MARK(if(z0, z1, z2))) MARK(if(zero(z0), x1, x2)) -> c35(ACTIVE(if(active(zero(mark(z0))), x1, x2)), IF(mark(zero(z0)), x1, x2), MARK(zero(z0))) MARK(if(s(z0), x1, x2)) -> c35(ACTIVE(if(active(s(mark(z0))), x1, x2)), IF(mark(s(z0)), x1, x2), MARK(s(z0))) MARK(if(0, x1, x2)) -> c35(ACTIVE(if(active(0), x1, x2)), IF(mark(0), x1, x2), MARK(0)) MARK(if(prod(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(prod(mark(z0), mark(z1))), x1, x2)), IF(mark(prod(z0, z1)), x1, x2), MARK(prod(z0, z1))) MARK(if(p(z0), x1, x2)) -> c35(ACTIVE(if(active(p(mark(z0))), x1, x2)), IF(mark(p(z0)), x1, x2), MARK(p(z0))) MARK(if(add(z0, z1), x1, x2)) -> c35(ACTIVE(if(active(add(mark(z0), mark(z1))), x1, x2)), IF(mark(add(z0, z1)), x1, x2), MARK(add(z0, z1))) MARK(if(true, x1, x2)) -> c35(ACTIVE(if(active(true), x1, x2)), IF(mark(true), x1, x2), MARK(true)) MARK(if(false, x1, x2)) -> c35(ACTIVE(if(active(false), x1, x2)), IF(mark(false), x1, x2), MARK(false)) MARK(if(x0, x1, x2)) -> c35(IF(mark(x0), x1, x2)) MARK(zero(z0)) -> c36(ACTIVE(zero(z0)), ZERO(mark(z0)), MARK(z0)) MARK(zero(fact(z0))) -> c36(ACTIVE(zero(active(fact(mark(z0))))), ZERO(mark(fact(z0))), MARK(fact(z0))) MARK(zero(if(z0, z1, z2))) -> c36(ACTIVE(zero(active(if(mark(z0), z1, z2)))), ZERO(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(zero(zero(z0))) -> c36(ACTIVE(zero(active(zero(mark(z0))))), ZERO(mark(zero(z0))), MARK(zero(z0))) MARK(zero(s(z0))) -> c36(ACTIVE(zero(active(s(mark(z0))))), ZERO(mark(s(z0))), MARK(s(z0))) MARK(zero(0)) -> c36(ACTIVE(zero(active(0))), ZERO(mark(0)), MARK(0)) MARK(zero(prod(z0, z1))) -> c36(ACTIVE(zero(active(prod(mark(z0), mark(z1))))), ZERO(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(zero(p(z0))) -> c36(ACTIVE(zero(active(p(mark(z0))))), ZERO(mark(p(z0))), MARK(p(z0))) MARK(zero(add(z0, z1))) -> c36(ACTIVE(zero(active(add(mark(z0), mark(z1))))), ZERO(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(zero(true)) -> c36(ACTIVE(zero(active(true))), ZERO(mark(true)), MARK(true)) MARK(zero(false)) -> c36(ACTIVE(zero(active(false))), ZERO(mark(false)), MARK(false)) MARK(s(fact(z0))) -> c37(ACTIVE(s(active(fact(mark(z0))))), S(mark(fact(z0))), MARK(fact(z0))) MARK(s(if(z0, z1, z2))) -> c37(ACTIVE(s(active(if(mark(z0), z1, z2)))), S(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(s(zero(z0))) -> c37(ACTIVE(s(active(zero(mark(z0))))), S(mark(zero(z0))), MARK(zero(z0))) MARK(s(s(z0))) -> c37(ACTIVE(s(active(s(mark(z0))))), S(mark(s(z0))), MARK(s(z0))) MARK(s(0)) -> c37(ACTIVE(s(active(0))), S(mark(0)), MARK(0)) MARK(s(prod(z0, z1))) -> c37(ACTIVE(s(active(prod(mark(z0), mark(z1))))), S(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(s(p(z0))) -> c37(ACTIVE(s(active(p(mark(z0))))), S(mark(p(z0))), MARK(p(z0))) MARK(s(add(z0, z1))) -> c37(ACTIVE(s(active(add(mark(z0), mark(z1))))), S(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(s(true)) -> c37(ACTIVE(s(active(true))), S(mark(true)), MARK(true)) MARK(s(false)) -> c37(ACTIVE(s(active(false))), S(mark(false)), MARK(false)) MARK(s(z0)) -> c37(S(mark(z0)), MARK(z0)) MARK(prod(z0, x1)) -> c39(ACTIVE(prod(z0, mark(x1))), PROD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(prod(x0, z1)) -> c39(ACTIVE(prod(mark(x0), z1)), PROD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(prod(x0, fact(z0))) -> c39(ACTIVE(prod(mark(x0), active(fact(mark(z0))))), PROD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(prod(x0, if(z0, z1, z2))) -> c39(ACTIVE(prod(mark(x0), active(if(mark(z0), z1, z2)))), PROD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(prod(x0, zero(z0))) -> c39(ACTIVE(prod(mark(x0), active(zero(mark(z0))))), PROD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(prod(x0, s(z0))) -> c39(ACTIVE(prod(mark(x0), active(s(mark(z0))))), PROD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(prod(x0, 0)) -> c39(ACTIVE(prod(mark(x0), active(0))), PROD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(prod(x0, prod(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(prod(mark(z0), mark(z1))))), PROD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(prod(x0, p(z0))) -> c39(ACTIVE(prod(mark(x0), active(p(mark(z0))))), PROD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(prod(x0, add(z0, z1))) -> c39(ACTIVE(prod(mark(x0), active(add(mark(z0), mark(z1))))), PROD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(prod(x0, true)) -> c39(ACTIVE(prod(mark(x0), active(true))), PROD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(prod(x0, false)) -> c39(ACTIVE(prod(mark(x0), active(false))), PROD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(prod(fact(z0), x1)) -> c39(ACTIVE(prod(active(fact(mark(z0))), mark(x1))), PROD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(prod(if(z0, z1, z2), x1)) -> c39(ACTIVE(prod(active(if(mark(z0), z1, z2)), mark(x1))), PROD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(prod(zero(z0), x1)) -> c39(ACTIVE(prod(active(zero(mark(z0))), mark(x1))), PROD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(prod(s(z0), x1)) -> c39(ACTIVE(prod(active(s(mark(z0))), mark(x1))), PROD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(prod(0, x1)) -> c39(ACTIVE(prod(active(0), mark(x1))), PROD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(prod(prod(z0, z1), x1)) -> c39(ACTIVE(prod(active(prod(mark(z0), mark(z1))), mark(x1))), PROD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(prod(p(z0), x1)) -> c39(ACTIVE(prod(active(p(mark(z0))), mark(x1))), PROD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(prod(add(z0, z1), x1)) -> c39(ACTIVE(prod(active(add(mark(z0), mark(z1))), mark(x1))), PROD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(prod(true, x1)) -> c39(ACTIVE(prod(active(true), mark(x1))), PROD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(prod(false, x1)) -> c39(ACTIVE(prod(active(false), mark(x1))), PROD(mark(false), mark(x1)), MARK(false), MARK(x1)) MARK(p(z0)) -> c40(ACTIVE(p(z0)), P(mark(z0)), MARK(z0)) MARK(p(fact(z0))) -> c40(ACTIVE(p(active(fact(mark(z0))))), P(mark(fact(z0))), MARK(fact(z0))) MARK(p(if(z0, z1, z2))) -> c40(ACTIVE(p(active(if(mark(z0), z1, z2)))), P(mark(if(z0, z1, z2))), MARK(if(z0, z1, z2))) MARK(p(zero(z0))) -> c40(ACTIVE(p(active(zero(mark(z0))))), P(mark(zero(z0))), MARK(zero(z0))) MARK(p(s(z0))) -> c40(ACTIVE(p(active(s(mark(z0))))), P(mark(s(z0))), MARK(s(z0))) MARK(p(0)) -> c40(ACTIVE(p(active(0))), P(mark(0)), MARK(0)) MARK(p(prod(z0, z1))) -> c40(ACTIVE(p(active(prod(mark(z0), mark(z1))))), P(mark(prod(z0, z1))), MARK(prod(z0, z1))) MARK(p(p(z0))) -> c40(ACTIVE(p(active(p(mark(z0))))), P(mark(p(z0))), MARK(p(z0))) MARK(p(add(z0, z1))) -> c40(ACTIVE(p(active(add(mark(z0), mark(z1))))), P(mark(add(z0, z1))), MARK(add(z0, z1))) MARK(p(true)) -> c40(ACTIVE(p(active(true))), P(mark(true)), MARK(true)) MARK(p(false)) -> c40(ACTIVE(p(active(false))), P(mark(false)), MARK(false)) MARK(add(z0, x1)) -> c41(ACTIVE(add(z0, mark(x1))), ADD(mark(z0), mark(x1)), MARK(z0), MARK(x1)) MARK(add(x0, z1)) -> c41(ACTIVE(add(mark(x0), z1)), ADD(mark(x0), mark(z1)), MARK(x0), MARK(z1)) MARK(add(x0, fact(z0))) -> c41(ACTIVE(add(mark(x0), active(fact(mark(z0))))), ADD(mark(x0), mark(fact(z0))), MARK(x0), MARK(fact(z0))) MARK(add(x0, if(z0, z1, z2))) -> c41(ACTIVE(add(mark(x0), active(if(mark(z0), z1, z2)))), ADD(mark(x0), mark(if(z0, z1, z2))), MARK(x0), MARK(if(z0, z1, z2))) MARK(add(x0, zero(z0))) -> c41(ACTIVE(add(mark(x0), active(zero(mark(z0))))), ADD(mark(x0), mark(zero(z0))), MARK(x0), MARK(zero(z0))) MARK(add(x0, s(z0))) -> c41(ACTIVE(add(mark(x0), active(s(mark(z0))))), ADD(mark(x0), mark(s(z0))), MARK(x0), MARK(s(z0))) MARK(add(x0, 0)) -> c41(ACTIVE(add(mark(x0), active(0))), ADD(mark(x0), mark(0)), MARK(x0), MARK(0)) MARK(add(x0, prod(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(prod(mark(z0), mark(z1))))), ADD(mark(x0), mark(prod(z0, z1))), MARK(x0), MARK(prod(z0, z1))) MARK(add(x0, p(z0))) -> c41(ACTIVE(add(mark(x0), active(p(mark(z0))))), ADD(mark(x0), mark(p(z0))), MARK(x0), MARK(p(z0))) MARK(add(x0, add(z0, z1))) -> c41(ACTIVE(add(mark(x0), active(add(mark(z0), mark(z1))))), ADD(mark(x0), mark(add(z0, z1))), MARK(x0), MARK(add(z0, z1))) MARK(add(x0, true)) -> c41(ACTIVE(add(mark(x0), active(true))), ADD(mark(x0), mark(true)), MARK(x0), MARK(true)) MARK(add(x0, false)) -> c41(ACTIVE(add(mark(x0), active(false))), ADD(mark(x0), mark(false)), MARK(x0), MARK(false)) MARK(add(fact(z0), x1)) -> c41(ACTIVE(add(active(fact(mark(z0))), mark(x1))), ADD(mark(fact(z0)), mark(x1)), MARK(fact(z0)), MARK(x1)) MARK(add(if(z0, z1, z2), x1)) -> c41(ACTIVE(add(active(if(mark(z0), z1, z2)), mark(x1))), ADD(mark(if(z0, z1, z2)), mark(x1)), MARK(if(z0, z1, z2)), MARK(x1)) MARK(add(zero(z0), x1)) -> c41(ACTIVE(add(active(zero(mark(z0))), mark(x1))), ADD(mark(zero(z0)), mark(x1)), MARK(zero(z0)), MARK(x1)) MARK(add(s(z0), x1)) -> c41(ACTIVE(add(active(s(mark(z0))), mark(x1))), ADD(mark(s(z0)), mark(x1)), MARK(s(z0)), MARK(x1)) MARK(add(0, x1)) -> c41(ACTIVE(add(active(0), mark(x1))), ADD(mark(0), mark(x1)), MARK(0), MARK(x1)) MARK(add(prod(z0, z1), x1)) -> c41(ACTIVE(add(active(prod(mark(z0), mark(z1))), mark(x1))), ADD(mark(prod(z0, z1)), mark(x1)), MARK(prod(z0, z1)), MARK(x1)) MARK(add(p(z0), x1)) -> c41(ACTIVE(add(active(p(mark(z0))), mark(x1))), ADD(mark(p(z0)), mark(x1)), MARK(p(z0)), MARK(x1)) MARK(add(add(z0, z1), x1)) -> c41(ACTIVE(add(active(add(mark(z0), mark(z1))), mark(x1))), ADD(mark(add(z0, z1)), mark(x1)), MARK(add(z0, z1)), MARK(x1)) MARK(add(true, x1)) -> c41(ACTIVE(add(active(true), mark(x1))), ADD(mark(true), mark(x1)), MARK(true), MARK(x1)) MARK(add(false, x1)) -> c41(ACTIVE(add(active(false), mark(x1))), ADD(mark(false), mark(x1)), MARK(false), MARK(x1)) K tuples:none Defined Rule Symbols: encArg_1, active_1, mark_1, fact_1, if_3, zero_1, s_1, prod_2, p_1, add_2 Defined Pair Symbols: ACTIVE_1, FACT_1, IF_3, ZERO_1, S_1, PROD_2, P_1, ADD_2, MARK_1, ENCARG_1, ENCODE_ACTIVE_1, ENCODE_FACT_1, ENCODE_MARK_1, ENCODE_IF_3, ENCODE_ZERO_1, ENCODE_S_1, ENCODE_PROD_2, ENCODE_P_1, ENCODE_ADD_2 Compound Symbols: c25_1, c27_1, c29_1, c30_1, c31_1, c32_1, c33_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c24_3, c26_2, c28_2, c38, c42, c43, c3_2, c4_2, c4_1, c5_2, c6_4, c6_3, c7_2, c8_2, c9_3, c9_2, c10_2, c11_3, c11_2, c34_3, c35_3, c35_1, c36_3, c37_3, c37_2, c39_4, c40_3, c41_4, c_1, c1_1, c3_1, c2_1